如何在ASP.NET MVC Internet应用程序模板中手动验证用户



我是网络安全的新手,所以我不想实现自己的安全。我计划通过VS2012模板为ASP.NET MVC Internet应用程序使用SimpleMembership。问题是我需要通过Web API传递数据。

我计划对我的Web API使用基本的身份验证,所以我只需要在http头中传递username/pass。我可以使用Thinktecure.IdentityModel拦截消息

authConfig.AddBasicAuthentication((userName, password) =>  
Membership.ValidateUser(userName, password));

我可以用自己的布尔函数替换Membership.ValidateUser。我已经成功地用用户名/密码查询了我的自定义数据库,一切都很好。然而,我使用模板的用户数据库,因为我不想存储字符串(甚至编码的)密码。

我不清楚如何使用SimpleMembership的数据库手动验证凭据。我可以获取UserProfile,但不知道如何检查配置文件的密码。

UserProfile user = context.UserProfiles.Find(1);
==OUTPUT==
user
UserId: 1
UserName: "bob"

你知道我如何检查输入的密码是否与现有用户的密码匹配吗?

谢谢你的帮助!

为什么不使用Membership.ValidateUser?这不仅限于ASP.NET成员身份,前提是您将[InitializeSimpleMembership](此处)属性放在正确的位置,或者您自己在其他地方执行了其中的逻辑,并且您对WebMatrix等有正确的引用。您仍然可以只调用Membership.ValidateUser,它将使用SimpleMemberships Validate user。

如果你想自己去数据库,假设你使用的是散列密码等,那么这篇文章可能会有所帮助,因为你需要在选择之前对输入的密码进行散列,剩下的就是写一些EF或(任何其他数据库访问方法),从用户名和散列密码匹配的用户表中进行选择。但我想不出有什么明显的理由作为会员来做这件事。ValidateUser会为你做这一切。

最新更新