gpt4 book ai didi

asp.net - 使用 ASP.NET 登录控件时是否可以手动设置身份验证票证?

转载 作者:行者123 更新时间:2023-12-04 11:30:23 25 4
gpt4 key购买 nike

我正在使用 ASP.NET 登录控件。我希望能够为每个用户单独设置表单例份验证的超时(而不是在 web.config 中全局设置)。据我了解,唯一的方法是手动设置 AuthenticationTicket 上的超时。使用登录控件时有没有办法做到这一点?在我看来,登录控件抽象了所有这些。我希望有一些方法可以继续使用登录控件,而且还能够为每个用户单独设置 FormsAuthentication 超时。

谢谢,
科里

最佳答案

MSDN says :

The LoggedIn event is raised after the authentication provider checks the user's credentials and the authentication cookie is queued to send to the browser in the next response. Use the LoggedIn event to provide additional processing, such as accessing per-user data, after the user is authenticated.



所以这个事件似乎是更换cookies的合适场所。首先,需要检索和解密cookie:
HttpCookie authCookie = Response.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket oldAuthTicket =
FormsAuthentication.Decrypt(authCookie.Value);

在此之后,应创建基于刚刚提取的新身份验证票:
FormsAuthenticationTicket newAuthTicket = new FormsAuthenticationTicket(
oldAuthTicket.Version,
oldAuthTicket.Name,
DateTime.Now,
DateTime.Now.Add(timeoutForUser),
oldAuthTicket.IsPersistent,
oldAuthTicket.UserData,
FormsAuthentication.FormsCookiePath
);
timeoutForUser这是一个 TimeSpan保存用户 session 超时的值。

最后,响应中的旧 cookie 应替换为新的:
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
HttpContext.Current.Response.Cookies.Set(authCookie);

这应该可以解决问题。

关于asp.net - 使用 ASP.NET 登录控件时是否可以手动设置身份验证票证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com