Вы можете реализовать свой собственный объект IPrincipal
, написав класс, реализующий этот интерфейс.
Поскольку вы собираетесь использовать другой источник, отличный от Windows, для предоставления имени пользователя и пароля, вам также потребуется написать собственную реализацию IIdentity
.
К счастью, это не большие интерфейсы.
Для вашего пользовательского IIdentity
я бы создал форму входа в систему, которая пытается найти комбинацию имени пользователя и пароля в базе данных SQL 2008. Если найдено, ваша единственная задача - как заполнить «роли» этого пользователя, чтобы обеспечить функциональность для метода IsInRole(string roleName)
вне интерфейса.
Вот ссылка на подробную статью о том, как добиться успеха как в Winforms, так и в ASP.NET
UPDATE
Кроме того, после присоединения этого принципала к Текущему потоку (и последующим созданным потокам) вы также можете добавить в свой код атрибуты, которые «требуют», чтобы текущий Принципал принадлежал к данной роли или имел заданное имя. *
Хорошим примером этого является статья.