获取哈希密码SimpleMembership

时间:2014-01-17 14:54:37

标签: asp.net asp.net-mvc-4 membership-provider simplemembership

我正在使用ASP.NET和MVC4来开发系统。身份验证/授权由simpleMembership完成。

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

api有一个函数getUserID(用户名,密码)。

数据库中的密码已加密。

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

我试图像那样做

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

但是上面也需要一个字符串答案。

我不想找到用户的明文密码,只是为了获取用户的哈希密码。

由于

1 个答案:

答案 0 :(得分:1)

如果您调用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();