如何增加formauthentication票证的会话持续时间

时间:2014-07-13 15:09:31

标签: c# asp.net asp.net-mvc-4

我的网站存在问题,用户会话在15分钟不活动后正在注销。

发生这种情况时,如果用户点击任何链接,则会将其带回登录页面。

我想将用户会话注销的持续时间增加到2小时。

以下是进行初始身份验证的方法:

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            var mcookie = new AbcCookie();

            if (ModelState.IsValid)
            {
                using (var marvRepo = new AbcRepositry())
                {
                    var passwordHash = Abc.Web.Portal.Helpers.Security.CreatePasswordHash(model.Password);

                    var userAccount = marvRepo.GetAbcUser(model.UserName,model.PartnerAccessCode);

                    if(userAccount != null && userAccount.Password == passwordHash && userAccount.PartnerAccessCode == model.PartnerAccessCode.ToUpper())
                    {
                        mcookie.GetMMformsauthentication(userAccount, model.RememberMe);


                           return RedirectToLocal(returnUrl);
                    }
                    else
                    {
                        ModelState.AddModelError("", "The user name,access code or password provided is incorrect.");
                    }


                }

        }

这是表单身份验证。

public void GetMMformsauthentication(UserAccount useraccount,bool createPersistentCookie)         {             const string UnknownUsername =“anonymous”;

        // Composing UserData to be stored in the auth cookie
        var userCookieData = new AbcUserCookieData()
        {
            UserId = useraccount.UserID,
            Password = useraccount.Password,
            PartnerAccessCode = useraccount.PartnerAccessCode
        };

        var ticket = new FormsAuthenticationTicket(1, string.IsNullOrEmpty(useraccount.UserID) ? UnknownUsername : useraccount.UserID, DateTime.Now,
                                                                         DateTime.Now.AddDays(100), createPersistentCookie, userCookieData.ToString(), FormsAuthentication.FormsCookiePath);
        var hashedCookie = FormsAuthentication.Encrypt(ticket);

        HttpContext.Current.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);

        var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashedCookie); // Hashed ticket
        authCookie.HttpOnly = true;
        authCookie.Expires = ticket.Expiration;
        authCookie.Path = ticket.CookiePath;
        authCookie.Secure = false;
        HttpContext.Current.Response.SetCookie(authCookie);
        //System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); 
    }
}

我试图增加身份验证票证的持续时间,但会话在15分钟后超时,无论使用何种值。

我在web.config中添加了以下内容,以确定是否可以解决问题。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

我假设“超时”值以分钟为单位(我故意将值设置为高数字)

我已尝试过所有内容,但我的会话在15分钟后仍会自动注销。

有没有人知道可能导致登录会话在15分钟后结束的原因?

0 个答案:

没有答案