我正在使用 ASP.NET MVC,并且希望能够在某人返回该站点时自动登录(以与该站点完全相同的方式)。
当用户首次注册或登录时,我将 cookie 设置如下:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
"playerid",
DateTime.Now,
DateTime.Now.AddMinutes(1), //This will be set to a longer period in live...
true,
Username + "|" + item.PlayerID.ToString(),
FormsAuthentication.FormsCookiePath);
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
如果我通过以用户身份登录来对此进行测试,然后查看其中的Cookies
选项卡,Firebug
则过期设置为Session
. 如果我关闭浏览器然后返回我的站点,我将不再登录。这是我所期望的,因为当浏览器关闭时会话结束(但这不是我想要发生的事情!)。
但是,如果我登录并浏览该站点,那么一分钟后过期不再显示为实际日期戳,Session
而是显示为实际日期戳。如果我然后关闭浏览器并返回我的网站,我将自动登录。
总而言之,似乎我的到期时间设置为Session
直到我规定的实际到期日期通过(在这种情况下为 t + 1 分钟)并且我一直活跃在网站上(我使用的是滑动到期)。
有什么想法可以将我的过期设置为我在 FormsAuthentication 票证中声明的内容(而不是显示为Session
)?