访问DNN API中的用户密码

时间:2013-10-06 06:34:48

标签: c# .net asp.net-web-api dotnetnuke

我正在尝试使用DNN API访问用户的密码哈希。请参阅以下代码段

[AllowAnonymous]
[HttpGet]
public HttpResponseMessage Auth()
{
    UserInfo u = DotNetNuke.Entities.Users.UserController.GetUserByName("user1");
    string hostPassword = DotNetNuke.Entities.Users.UserController.GetPassword(ref u, String.Empty);
    return Request.CreateResponse(HttpStatusCode.OK, hostPassword);
}

但我收到以下错误,说无法检索哈希密码

Parser Error Message: Configured settings are invalid: Hashed passwords cannot be retrieved. Either set the password format to different type, or set enablePasswordRetrieval to false.

这是我的配置部分

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SiteSqlServer" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" requiresUniqueEmail="false" passwordFormat="Hashed" applicationName="DotNetNuke" description="Stores and retrieves membership data from the local Microsoft SQL Server database" />

任何人都可以解释我的代码或配置有什么问题。?

此外,如果我想授权用户,我会在DNN网络服务中进行授权吗?

1 个答案:

答案 0 :(得分:0)

找到了一种在DNN中验证用户身份的可靠方法。 可以通过以下方式验证DNN用户。

System.Web.Security.Membership.ValidateUser(username,password)

在DNN中不允许检索已使用的密码,这也不是一个好习惯。这就是我的代码错误消息的原因。