我在MVC4应用程序中使用SimpleMembershipProvider。似乎强制密码复杂性,最大登录尝试次数等内容并未内置于此提供程序中,就像它们在早期版本的框架中提供的提供程序中一样。有没有内置的方法来使用SimpleMembership处理这些事情,或者我必须自己动手。
此外,SimpleMemberhip提供程序使用什么哈希算法,我应该担心它似乎没有使用盐(即我的网页_会员表中的盐列是空的)
答案 0 :(得分:6)
我还没有找到密码复杂性的执行,我自己也是MVC的新手。但是SimpleMembership的Login方法有一个覆盖,它指定了最大失败尝试次数和锁定时间段(以秒为单位)。以下是我的登录POST控制器操作的示例,该操作将在3次尝试后锁定帐户:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (WebSecurity.IsAccountLockedOut(model.UserName, 3, 300))
{
ModelState.AddModelError("", "Your account has been locked due to excessive log in failures. Please try again in 5 minutes.");
return View(model);
}
else if (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);
}
答案 1 :(得分:1)
我认为您可以使用SimpleMembershipProvider(MembershipProvider)
构造函数重载来提供MembershipProvider的实例以及设置的密码要求属性,然后SimpleMembershipProvider将使用这些值。
关于哈希它正在使用PBKDF2,这意味着你不应该为此担心。