我正在使用ASP.NET Membership API。我想强制用户在第一次登录后更改密码。但是,我无法在ASP.NET的Membership API中找到任何此类内置功能。
是否有可能?如果是的话,怎么能轻松完成呢?ASP.NET会员API强制密码更改
5
A
回答
4
没有内置功能。
你需要自己实现它。这里有一个例子:http://forums.asp.net/p/1273575/2414481.aspx
8
给你,完全测试的解决方案;)
protected void LoginButton_Click(object sender, EventArgs e)
{
/****note: UserName and Password are textbox fields****/
if (Membership.ValidateUser(UserName.Text, Password.Text))
{
MembershipUser user = Membership.GetUser(UserName.Text);
if (user == null)
{
FailureText.Text = "Invalid username. Please try again.";
return;
}
if (user.IsLockedOut)
user.UnlockUser();
/* this is the interesting part for you */
if (user.LastPasswordChangedDate == user.CreationDate) //if true, that means user never changed their password before
{
//TODO: add your change password logic here
}
}
}
如果您需要在如何修改密码帮助,请让我知道。
这篇文章对你有帮助吗,请标记为答案
+1
至于LastPasswordChangedDate财产的替代方案,也可以使用Comment属性(这只是一个自由格式的字符串)来指示用户需要重置他们的密码,以防您的更改密码逻辑并不总是围绕密码更改日期。 – 2013-07-31 02:24:04
0
下面是VB中的解决方案。它还包括用于读取和设置asp:Login ID="LoginUser"
表单元素的FindControl。
Protected Sub LoginButton_Click(sender As Object, e As EventArgs)
'***note: UserName and Password are textbox fields***
Dim UserName As TextBox = DirectCast(LoginUser.FindControl("UserName"), TextBox)
Dim Password As TextBox = DirectCast(LoginUser.FindControl("Password"), TextBox)
Dim FailureText As Literal = DirectCast(LoginUser.FindControl("FailureText"), Literal)
If Membership.ValidateUser(UserName.Text, Password.Text) Then
Dim user As MembershipUser = Membership.GetUser(UserName.Text)
If user Is Nothing Then
FailureText.Text = "Invalid username. Please try again."
Return
End If
If user.IsLockedOut Then
user.UnlockUser()
End If
' this is the interesting part for you
If user.LastPasswordChangedDate = user.CreationDate Then
'TODO: add your change password logic here
End If
End If
End Sub
0
这就是我做到的。最好是在登录后做到这一点。
protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
if (Membership.ValidateUser(this.LoginUser.UserName, this.LoginUser.Password))
{
MembershipUser user = Membership.GetUser(this.LoginUser.UserName);
if (user == null)
{
this.LoginUser.FailureText = "Invalid username. Please try again.";
return;
}
if (user.IsLockedOut)
{
user.UnlockUser();
}
if (user.LastPasswordChangedDate == user.CreationDate) //if true, that means user never changed their password before
{
Response.Redirect("~/Account/ChangePassword.aspx");
}
}
}
相关问题
- 1. 会员更改密码
- 2. ASP.NET会员密码?
- 3. 会员可以更改密码
- 4. ASP.NET会员密码重置
- 5. ASP.NET会员密码到期
- 6. ASP.Net会员密码恢复
- 7. asp.net会员密码安全
- 8. Asp.net会员密码格式
- 9. 强制更改/重置mysql密码?
- 10. ASP.NET会员资格 - 更改密码询问旧
- 11. asp.net会员在不知道旧密码的情况下更改密码
- 12. 更改Umbraco会员密码不知道旧密码
- 13. asp.net会员通过用户和管理员自定义更改密码
- 14. asp.net会员如何在创建新用户/更改密码时限制密码属性?
- 15. 在机器密钥更改期间维护ASP.Net成员密码
- 16. Ad Asp.Net更改密码
- 17. Asp.Net会员密码无符号重置
- 18. asp.net会员 - 自定义密码恢复
- 19. ASP.NET会员用户忘记密码
- 20. ASP.NET的密码强度控制
- 21. CentOS的强行更改密码问题
- 22. 在密码更改后,旧密码仍然工作在asp.net成员身份
- 23. ASP.NET会员控制重置密码回发错误
- 24. 使用REST API后端在Web应用程序中强制更改密码
- 25. ASP.NET成员变更密码控制 - 需要检查以前的密码
- 26. ASP.NET成员资格配置工具 - 更改密码?
- 27. 如何在asp.net成员资格中手动更改密码?
- 28. ASP.NET成员身份更改密码不起作用
- 29. 如何更改sonarqube管理员密码
- 30. VBScript来更改Windows管理员密码
http://forums.asp.net/p/1273575/2414481.aspx – 2012-03-19 13:07:54