2013-02-20 42 views
0

我正在使用带有基于表单登录的ASP.NET MVC3。 登录过程效果很好。但是当我关闭浏览器并返回页面时,它会进入登录页面,我需要再次输入凭证。我怎样才能避免这一点。基于表单的登录和FormAuthenticationTicket仍然要求凭据

这是我的登录代码:

[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); 
     } 

回答

2

您需要使用永久性Cookie(设定在你的情况faCookie.Expires,因为你手动创建的cookie)。

有关更多信息,请参阅this KB article

+0

完美!谢谢。 – 2013-02-21 08:31:58