Внедрить IPrincipal в проект winforms - PullRequest
3 голосов
/ 19 декабря 2009

Я пытаюсь реализовать авторизацию и аутентификацию в моем текущем проекте winforms. Аутентификация также должна соответствовать пользователю в базе данных SQL Server 2008. Дело в том, что это многопользовательская программа, поэтому при добавлении нового пользователя создается база данных, а в базу данных добавляется личность пользователя.

Я задавался вопросом, возможно ли реализовать IPrincipal и IIdentity. Пока я нашел только реализации ASP.NET.

Кто-нибудь может дать мне несколько советов о том, как лучше всего реализовать защиту паролем / идентификатором пользователя в приложении winforms? Помня о том, что он должен быть проверен с помощью базы данных в SQL Server.

Это означает, что для этого пользователя должна существовать база данных, и его учетные данные должны быть правильными.

1 Ответ

7 голосов
/ 19 декабря 2009

Вы можете реализовать свой собственный объект IPrincipal, написав класс, реализующий этот интерфейс.

Поскольку вы собираетесь использовать другой источник, отличный от Windows, для предоставления имени пользователя и пароля, вам также потребуется написать собственную реализацию IIdentity.

К счастью, это не большие интерфейсы.

Для вашего пользовательского IIdentity я бы создал форму входа в систему, которая пытается найти комбинацию имени пользователя и пароля в базе данных SQL 2008. Если найдено, ваша единственная задача - как заполнить «роли» этого пользователя, чтобы обеспечить функциональность для метода IsInRole(string roleName) вне интерфейса.

Вот ссылка на подробную статью о том, как добиться успеха как в Winforms, так и в ASP.NET

UPDATE

Кроме того, после присоединения этого принципала к Текущему потоку (и последующим созданным потокам) вы также можете добавить в свой код атрибуты, которые «требуют», чтобы текущий Принципал принадлежал к данной роли или имел заданное имя. *

Хорошим примером этого является статья.

...