在winforms项目中实现IPrincipal

时间:2009-12-19 10:48:09

标签: c# winforms forms-authentication

我正在尝试在当前的winforms项目中实现授权和身份验证。身份验证还必须匹配SQL Server 2008数据库中的用户。问题是,它是一个多用户程序,所以当添加新用户时,会创建一个数据库并将用户身份添加到数据库中。

我想知道是否可以实施IPrincipal和IIdentity。到目前为止,我只找到了ASP.NET实现。

有人可以给我一些指导,了解在winforms应用程序中实现密码/用户ID安全性的最佳方法是什么?请记住,必须使用SQL Server中的数据库进行验证。

意味着该用户必须存在数据库,并且其凭据必须正确。

1 个答案:

答案 0 :(得分:7)

您可以通过编写实现该接口的类来实现您自己的IPrincipal对象。

由于您打算使用Windows以外的其他来源提供用户名和密码,因此您还需要编写自己的IIdentity实现。

幸运的是,这些不是大型接口。

对于您的自定义IIdentity,我将创建一个登录表单,尝试在SQL 2008数据库中查找用户名/密码组合。如果找到,那么您唯一关心的是如何填充该用户的“角色”,以便为界面提供IsInRole(string roleName)方法的功能。

以下是指向detailed article on how to accomplish in both Winforms and ASP.NET

的链接

<强>更新

此外,一旦将此主体附加到当前线程(以及后续创建的线程),您还可以向代码添加属性,这些属性“要求”当前主体属于给定角色,或者具有给定名称。

一篇好的example of that is this文章。