我正在 MVC4 中开发一个 Web 应用程序,登录视图有选项记住我 - 为了实现这个功能,我使用了由 - 创建的 cookie
WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)
登录方式如下
[AllowAnonymous]
public ActionResult Login()
{ //Get persistant cookie
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (!ReferenceEquals(authCookie, null))
{ //Decrypt
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
string userName = Server.HtmlEncode(ticket.Name); //GetuserName
// get Role and redirect in as done after authentication
return RedirectToDefaultView(returnUrl, userName);
}
return View();
}
好吧,我有一些顾虑 - 如果这是最佳实践,因为我只是在验证 Cookie,如果它存在于客户端机器上,我正在调用方法 RedirectToDefaultView(returnUrl, userName),该方法在 WebSecurity.Login(model.UserName, model .Password, persistCookie: model.RememberMe) 在下面的方法中..
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if(WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
return RedirectToDefaultView(returnUrl, userName);
}
由于某种原因无法在登录控制中保留密码后我选择的方法,并且还在网站上阅读了这不是好的做法。
@Html.PasswordFor(model => model.Password, new { @class = "password-icon", @maxlength = 30 })
对此的任何建议或帮助都会对 gr8 有所帮助。
谢谢高铁。