1

在我的应用程序中,我使用了 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 秒内自动注销。

解决方案是什么?

谢谢

4

1 回答 1

0

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

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

MachineKey 用于 ViewState 加密和验证,并FormAuthentication使用此密钥签署身份验证票,如果您未在其中指定web.config它会自动分配,但如果您自己指定它,收集器将不会清除它... 这里是一篇信息性文章它可以帮助您更好地了解 MachineKey 的重要性/工作原理

于 2012-11-08T09:18:51.213 回答