C# 在.Net winForms应用程序中使用Web安全性

C# 在.Net winForms应用程序中使用Web安全性,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在尝试在.Net桌面应用程序中实现WebMatrix.WebData.WebSecurity()方法,该应用程序将与MVC4项目一起连接到服务器上的数据库,因此我想在两个应用程序上使用当前提供程序来验证用户 我想知道这是否可能,因为我得到了一个例外: {System.InvalidOperationException: To call this method, the "Membership.Provider" property must be an instance of "Exten

我正在尝试在
.Net
桌面应用程序中实现
WebMatrix.WebData.WebSecurity()
方法,该应用程序将与
MVC4
项目一起连接到服务器上的数据库,因此我想在两个应用程序上使用当前提供程序来验证用户

我想知道这是否可能,因为我得到了一个例外:

{System.InvalidOperationException: To call this method, the 
"Membership.Provider" property must be an instance of 
"ExtendedMembershipProvider".
 at WebMatrix.WebData.WebSecurity.VerifyProvider()
我已经将我的
MVC4
应用程序的
Web.Config
复制到我的
app.Config
文件中,但我似乎仍然无法让它工作。任何指示都将不胜感激

编辑 这与MVC4控制器上的[InitializeSimpleMembership]属性有关。这将对Web安全性执行一些初始化。有人知道如何在没有属性的情况下初始化此代码吗

再次感谢

谢谢

我正在尝试在中实现WebMatrix.WebData.WebSecurity()方法 Net桌面应用程序

算了吧。成员资格提供程序与ASP.NET上下文紧密耦合,不打算在桌面应用程序中使用。这取决于HttpContext、cookies等内容。。。桌面应用程序中不存在的


您可以做的是定义一个可重用的服务层,您可以直接在桌面应用程序中使用它,然后让ASP.NET成员身份提供程序的实现调用此服务层的方法,因此,在两者之间重复使用相同的功能。

OK我只想尝试使用Web数据库中存在的用户的用户名和密码登录。您知道如何在不使用此WebSecurity.login()的情况下检查登录是否有效吗?您可以简单地使用实体框架,甚至是普通的ADO.NET来查询关系数据库,并验证给定表中的用户名和密码是否正确。在websecurity方法中,密码是如何散列的?它使用的是带salt的
HMAC SHA256
。请看下面的博客文章,它演示了提供者使用的Crypto Helper类:正如您所看到的,salt不是存储在数据库中,而是散列(前16个字节)的一部分。谢谢Darin,谢谢我将使用它来验证用户