asp.net-mvc-4 SimpleMembershipProvider中,如何修改webpages_Membership表以支持长尾词查询?
- 内容介绍
- 文章标签
- 相关推荐
本文共计501个文字,预计阅读时间需要3分钟。
使用MVC中的SimpleMembershipProvider访问webpages_Membership表信息的最佳方法是:
1. 在Global.asax中配置SimpleMembershipProvider。
2.使用Membership类提供的API进行用户验证和访问控制。
例如,若用户连续三次输入错误密码,可以尝试以下代码实现账户锁定:
csharp
using System.Web.Security;public void LockAccountIfPasswordIncorrect(string username, string password){ MembershipUser user=Membership.GetUser(username); int failedAttempts=0;
if (user !=null) { failedAttempts=user.FailedPasswordAttempts;
if (failedAttempts >=3) { user.IsLockedOut=true; Membership.UpdateUser(user); // 账户锁定逻辑,如发送通知等 } else { // 更新密码尝试次数 user.FailedPasswordAttempts=failedAttempts + 1; Membership.UpdateUser(user); } }}
非常感谢您使用SimpleMembership,我会使用以下方法访问此信息:
csharppublic bool ValidateUser(string username, string password){ return Membership.ValidateUser(username, password);}
哪个是使用MVC 4中的SimpleMembershipProvider访问webpages_Membership表信息的最佳方法?如果他/她输入错误密码三次,我正在尝试实施帐户阻止.非常感谢
使用SimpleMembership,您将使用以下方法访问此信息:WebSecurity.IsAccountLockedOut(userName, allowedPasswordAttempts, intervalInSeconds)
IsAccountLockedOut根据您要允许的尝试次数以及自上次尝试登录失败以来的时间,返回帐户是否被锁定.这用于阻止暴力破解其他机器破解密码的企图.您可以在对用户进行身份验证的位置添加此检查,例如Account controllers Login方法.你可以这样做:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid && !WebSecurity.IsAccountLockedOut(model.UserName, 3, 180) && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { return RedirectToLocal(returnUrl); } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model); }
在这种情况下,您不希望完全禁用用户,并允许有效用户在间隔过去后重新进入.这可以阻止暴力攻击而不是忘记密码的人.
在注册期间使用IsConfirmed字段,您希望用户确认他们为您提供了有效的电子邮件地址.您将在数据库中生成并存储ConfirmationToken,您将通过该电子邮件发送给用户,并指示他们单击链接,将其带到MVC应用程序中的控制器/操作,该控制器/操作将验证令牌并将IsConfirmed字段设置为true .
本文共计501个文字,预计阅读时间需要3分钟。
使用MVC中的SimpleMembershipProvider访问webpages_Membership表信息的最佳方法是:
1. 在Global.asax中配置SimpleMembershipProvider。
2.使用Membership类提供的API进行用户验证和访问控制。
例如,若用户连续三次输入错误密码,可以尝试以下代码实现账户锁定:
csharp
using System.Web.Security;public void LockAccountIfPasswordIncorrect(string username, string password){ MembershipUser user=Membership.GetUser(username); int failedAttempts=0;
if (user !=null) { failedAttempts=user.FailedPasswordAttempts;
if (failedAttempts >=3) { user.IsLockedOut=true; Membership.UpdateUser(user); // 账户锁定逻辑,如发送通知等 } else { // 更新密码尝试次数 user.FailedPasswordAttempts=failedAttempts + 1; Membership.UpdateUser(user); } }}
非常感谢您使用SimpleMembership,我会使用以下方法访问此信息:
csharppublic bool ValidateUser(string username, string password){ return Membership.ValidateUser(username, password);}
哪个是使用MVC 4中的SimpleMembershipProvider访问webpages_Membership表信息的最佳方法?如果他/她输入错误密码三次,我正在尝试实施帐户阻止.非常感谢
使用SimpleMembership,您将使用以下方法访问此信息:WebSecurity.IsAccountLockedOut(userName, allowedPasswordAttempts, intervalInSeconds)
IsAccountLockedOut根据您要允许的尝试次数以及自上次尝试登录失败以来的时间,返回帐户是否被锁定.这用于阻止暴力破解其他机器破解密码的企图.您可以在对用户进行身份验证的位置添加此检查,例如Account controllers Login方法.你可以这样做:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid && !WebSecurity.IsAccountLockedOut(model.UserName, 3, 180) && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { return RedirectToLocal(returnUrl); } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model); }
在这种情况下,您不希望完全禁用用户,并允许有效用户在间隔过去后重新进入.这可以阻止暴力攻击而不是忘记密码的人.
在注册期间使用IsConfirmed字段,您希望用户确认他们为您提供了有效的电子邮件地址.您将在数据库中生成并存储ConfirmationToken,您将通过该电子邮件发送给用户,并指示他们单击链接,将其带到MVC应用程序中的控制器/操作,该控制器/操作将验证令牌并将IsConfirmed字段设置为true .

