Asp.Net身份验证(自动注销)

时间:2012-11-08 09:12:59

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

在我的应用程序中,我使用了Asp.Net表单身份验证,

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    1,
                    adminResult.UserName,
                    DateTime.Now,
                    DateTime.Now.AddDays(2),
                    true,
                    "Administrator",
                    FormsAuthentication.FormsCookiePath
                    );
                string hash = FormsAuthentication.Encrypt(ticket);
                HttpCookie coockie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
                if (ticket.IsPersistent)
                {
                    coockie.Expires = ticket.Expiration;
                }
                Response.Cookies.Add(coockie);
                if (Url.IsLocalUrl(returnUrl))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Dashboard", "Cockpit");
                }

但是它会在10到15秒内自动退出。

解决方案是什么?

由于

1 个答案:

答案 0 :(得分:0)

可能是因为垃圾收集器清除并将机器密钥重新分配给您的应用程序。 Generate a machine key并将其放在web.config

<system.web>
    <machineKey validationKey="###YOUR KEY HERE ###"
                decryptionKey="## decrypt key here ##" 
                validation="SHA1" decryption="AES" />

MachineKey用于ViewState加密和验证,FormAuthentication使用此密钥签署身份验证票证,如果您未在web.config中指定一个自动分配,但如果您自己指定它收藏家不会清除它...... HERE是一篇内容丰富的文章,它可以帮助您更好地理解MachineKey的重要性/工作