Как реализовать компонент безопасности в Windows Forms?

Проблема заключается в том, что событие click в элементе .file-upload всплывает до .upload-button и перехватывается обработчиком click, который запускает обработчик щелчка по .file-upload, который всплывает до .upload-button который вызывает щелчок ... и т. д.

Чтобы это исправить, не позволяйте событию пузыриться из .file-upload, добавив к нему обработчик события click и вызвав stopPropagation() для event, например:

[1112 ]

$(document).ready(function() {
  var readURL = function(input) {
    if (input.files && input.files[0]) {
      var reader = new FileReader();
      reader.onload = function(e) {
        $('.profile-image').attr('src', e.target.result);
      }
      reader.readAsDataURL(input.files[0]);
    }
  }

  $(".file-upload").on('change click', function(e) {
    e.stopPropagation();
    readURL(this);
  });

  $(".upload-button").on('click', function() { 
    $(".file-upload").click();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <img class="profile-image" src="demo.png" alt="Profile Image">
  <a class="profile-img-edit upload-button">
    <i class="fas fa-camera"></i> Select Image
    <input class="file-upload" type="file" name="file" size="40" accept=".png, .jpg, .jpeg, .gif">
  </a>
</div>

8
задан roman m 24 April 2009 в 05:38
поделиться

6 ответов

Microsoft выпустила Службы клиентских приложений, чтобы сделать именно то, что, я думаю, вы ищете ...

http://msdn.microsoft.com/en-us/ library / bb384297.aspx является официальным документом http://aspalliance.com/1595_Client_Application_Services__Part_1 - хорошее руководство (со скриншотами и т. Д.)

2
ответ дан 5 December 2019 в 20:18
поделиться

For a login form, I use my own component that is a wrapper around a p/invoke call to CredentialsUIPromptForCredentials (credui.dll), see this MSDN article for more info. It provides features such as the ability to securely remember users' passwords.

It's kind of surprising that this isn't available in the Framework. Possibly because credui.dll is only available on XP and later, in which case we may see it in a future version of the framework.

As for role-based security, it's inherently insecure in a client app, since a smart user has access to your source code with a disassembler.

So while you can use the ASP.NET RoleManager in a WinForms app, it's not actively encouraged. With RoleManager the user would simply need to replace your RoleManager with his own more liberal implementation in the configuration file to bypass your carefully crafted authorization rules.

The secure way to go is to prompt for credentials (or use windows credentials), and pass these to a service tier (either the database directly, or e.g. a web service) for authentication.

0
ответ дан 5 December 2019 в 20:18
поделиться

Если вы подключаетесь напрямую к базе данных (без среднего уровня), вам необходимо применить свою безопасность на уровне базы данных.

Если у вас есть дополнительная информация о том, планируете ли вы подключаясь напрямую к базе данных с клиентского компьютера или через веб-сервис и т. д. Я могу обновить свой ответ, чтобы отразить это.

При подключении напрямую к базе данных вам необходимо убедиться, что база данных защищена не только от вашего приложения, но и от любого, кто можно подключиться к SQL Server. Вы можете использовать проверку подлинности Windows для подключения к SQL Server и установки ролей на его основе.

0
ответ дан 5 December 2019 в 20:18
поделиться

Поскольку у вас нет принятого ответа, и поскольку я наткнулся на этот вопрос, исследуя другой, я постараюсь дать вам несколько указателей.

Как уже отмечалось, управление пользователями и Безопасность на основе ролей в приложении winforms не работает на стороне клиента. В качестве веб-аналогии представьте, что вы пытаетесь реализовать всю свою безопасность, используя только javascript и файлы cookie, не сохраняя никакой информации на стороне сервера. По умолчанию это небезопасно.

Как и было предложено, вы можете реализовать безопасность в своей базе данных, и ваши пользователи будут напрямую подключаться к базе данных из вашей формы выигрыша. Я настоятельно рекомендую вам НЕ проходить такой курс. Управление пользователями станет кошмаром. Вам нужен средний уровень.

Что вам следует сделать, так это создать веб-службу, которая реализует безопасность на основе ролей (поскольку вы знакомы с ней - есть лучшие варианты авторизации) и имеет настраиваемое хранилище аутентификации. Если вы используете WCF для создания веб-службы, вы можете использовать те же классы RoleProvider и MembershipProvider, к которым вы привыкли в ASP.NET.

Эта веб-служба обрабатывает всю бизнес-логику вашей системы и отвечает за подключение в базу данных. Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение для форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

знакомы с ним - есть лучшие варианты авторизации) и имеет настраиваемое хранилище аутентификации. Если вы используете WCF для создания веб-службы, вы можете использовать те же классы RoleProvider и MembershipProvider, к которым вы привыкли в ASP.NET.

Эта веб-служба обрабатывает всю бизнес-логику вашей системы и отвечает за подключение в базу данных. Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

знакомы с ним - есть лучшие варианты авторизации) и имеет настраиваемое хранилище аутентификации. Если вы используете WCF для создания веб-службы, вы можете использовать те же классы RoleProvider и MembershipProvider, к которым вы привыкли в ASP.NET.

Эта веб-служба обрабатывает всю бизнес-логику вашей системы и отвечает за подключение в базу данных. Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение для форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

вы можете использовать те же классы RoleProvider и MembershipProvider, к которым вы привыкли в ASP.NET.

Эта веб-служба обрабатывает всю бизнес-логику вашей системы и отвечает за подключение к базе данных. Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

вы можете использовать те же классы RoleProvider и MembershipProvider, к которым вы привыкли в ASP.NET.

Эта веб-служба обрабатывает всю бизнес-логику вашей системы и отвечает за подключение к базе данных. Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

Он обеспечивает безопасный уровень абстракции и сокращает объем администрирования базы данных, который необходимо выполнять для управления пользователями. Ваше приложение для форм выигрыша становится оболочкой пользовательского интерфейса, отвечающей только за обработку взаимодействия с пользователем и предварительную проверку данных (вы также должны проверять на среднем уровне) и ничего больше.

3
ответ дан 5 December 2019 в 20:18
поделиться

Я искал то же самое и до сих пор ничего не нашел. Проверьте это:

Здесь немного: NET-провайдеры в WinForms http://windark.net/blog/PermaLink,guid,5341a7d0-4eab-473d-9143-a3fa6c41db90.aspx

Решение здесь. Хороший образец (на VB): Использование поставщика членства ASP.NET в приложении Windows Forms http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm

Но потом я подумал, есть ли кто-нибудь, кто также написал эквивалентные элементы управления aspnet для Winforms? Начало здесь, в этой статье MSDN Mag: Унификация Windows Forms и поставщиков ASP.NET для управления учетными данными http://msdn.microsoft.com/en-us/magazine/cc163807.aspx

Надеюсь, это ответит на ваш вопрос;)

1
ответ дан 5 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: