我正在使用ASP.NET和MVC4开发系统。认证/授权是通过simpleMembership完成的。
我的团队(我们隶属于一家公司)需要从同一公司的其他一些团队的api中检索数据(用户在两个系统上都具有相同的用户名/密码)。
该api具有功能getUserID(username,password)。
数据库中的密码已加密。
如何调用用户的加密密码,以便调用API的该功能?
我正在尝试那样做
SimpleMembershipProvider provider = new SimpleMembershipProvider();
string name = provider.GetPassword("testUser1");
但是以上内容也需要一个字符串答案。
我不想找到用户的纯文本密码,只是想获取用户的哈希密码。
谢谢
如果调用MembershipUser.GetPassword,则将得到未实现的异常,因为MembershipUser适用于旧的ASP.NET提供程序。在使用成员资格提供者模型时,您通常会看到一些挫败感。
在SimpleMembership中,密码存储在与用户配置文件信息不同的表/实体中,并且称为webpages_Membership。SimpleMembership首先使用EF代码,但除UserProfile之外,它无法使您直接访问其使用的其他实体。其他所有内容都隐藏在WebSecurity类的后面。因此,如果此类未为您提供所需的信息,那么我知道获得访问权限的唯一方法是直接转到数据库。这是我验证过的一种方法。
var context = new UsersContext();
var username = User.Identity.Name;
int userId = WebSecurity.GetUserId(username);
string sqlCmd = "select Password from webpages_Membership where UserId = " + userId.ToString();
string password = context.Database.SqlQuery<string>(sqlCmd).FirstOrDefault();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句