我正在尝试在当前的winforms项目中实现授权和身份验证。身份验证还必须匹配SQL Server 2008数据库中的用户。问题是,它是一个多用户程序,所以当添加新用户时,会创建一个数据库并将用户身份添加到数据库中。
我想知道是否可以实施IPrincipal和IIdentity。到目前为止,我只找到了ASP.NET实现。
有人可以给我一些指导,了解在winforms应用程序中实现密码/用户ID安全性的最佳方法是什么?请记住,必须使用SQL Server中的数据库进行验证。
意味着该用户必须存在数据库,并且其凭据必须正确。
答案 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文章。