2009-12-19 80 views
3

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

我不知道这是可能实现的IPrincipal和IIdentity的。到目前为止,我只找到了ASP.NET实现。

任何人都可以给我一些指导,以什么来实现的WinForms应用程序的密码/用户ID安全的最佳途径?请记住,它必须通过SQL Server中的数据库进行验证。

这意味着一个数据库具有用户不存在,以及他们的凭据必须是正确的。

+0

您如何验证用户以及您以后如何表示已验证的用户是两件不同的事情。你在问如何实现IPrincipal,或者如何使用用户名/密码机制来认证用户? – 2009-12-19 10:57:03

+0

我其实想知道如何使用psw /用户名来认证用户? – 2009-12-19 11:02:19

+0

你确定这真的是你想要做的吗?对富客户端使用自定义身份验证机制是一件非常不寻常的事情。通常,依靠Windows的内置安全机制要好得多。也许我们需要一些背景。一个自助服务终端类型的应用程序是我能想到的这种情况下的几个例子之一。 – 2009-12-19 11:18:57

回答

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文章。

+0

伟大的文章!我一定会读它! :) – 2009-12-19 11:27:01

+0

@TonyTheLion - 你会介意将此答案标记为已接受吗? – 2014-06-25 10:35:55