基于表单的登录和FormAuthenticationTicket仍然要求凭据

本文关键字:FormAuthenticationTicket 登录 于表单 表单 | 更新日期: 2023-09-27 18:00:19

Am使用ASP.NET MVC3进行基于表单的登录。登录过程非常有效。但当我关闭浏览器并返回页面时,它会转到登录页面,我需要再次输入凭据。我该如何避免这种情况。

这是我的登录代码:

[HttpPost]
        public ActionResult LogOn(LogOnModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                if (Membership.ValidateUser(model.Username, model.Password))
                {
                    var userprofile = svc.GetUserByUsername(model.Username);
                    var serializeModel = new CustomPrincipalSerializeModel();
                    serializeModel.Username = userprofile.Username;
                    serializeModel.Name = userprofile.Name;
                    serializeModel.DisplayAs = userprofile.DisplayAs;
                    serializeModel.MarketId = userprofile.MarketId;
                    var serializer = new JavaScriptSerializer();
                    var userData = serializer.Serialize(serializeModel);
                    //FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe);
                    var authTicket = new FormsAuthenticationTicket(
                        1,
                        model.Username,
                        DateTime.Now,
                        DateTime.Now.AddDays(30),
                        true,
                        userData);
                    var encTicket = FormsAuthentication.Encrypt(authTicket);
                    var faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                    Response.Cookies.Add(faCookie);
                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/''"))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Användarnamnet eller lösenordet är felaktigt.");
                }
            }
            return View(model);
        }

基于表单的登录和FormAuthenticationTicket仍然要求凭据

您需要使用一个持久cookie(在您的情况下设置faCookie.Expires,因为您手动创建cookie)。

有关详细信息,请参阅此KB文章。

相关文章:
  • 没有找到相关文章