获取哈希密码SimpleMembership

吉姆·布鲁姆(Jim Blum)

我正在使用ASP.NET和MVC4开发系统。认证/授权是通过simpleMembership完成的。

我的团队(我们隶属于一家公司)需要从同一公司的其他一些团队的api中检索数据(用户在两个系统上都具有相同的用户名/密码)。

该api具有功能getUserID(username,password)。

数据库中的密码已加密。

如何调用用户的加密密码,以便调用API的该功能?

我正在尝试那样做

    SimpleMembershipProvider provider = new SimpleMembershipProvider();
    string name = provider.GetPassword("testUser1");

但是以上内容也需要一个字符串答案。

我不想找到用户的纯文本密码,只是想获取用户的哈希密码。

谢谢

凯文·荣汉斯(Kevin Junghans)

如果调用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章