gpt4 book ai didi

authentication - Global.asax 事件 : Application_OnPostAuthenticateRequest

转载 作者:行者123 更新时间:2023-12-01 13:08:17 26 4
gpt4 key购买 nike

我在 global.asax 中使用 Application_OnPostAuthenticateRequest 事件来获取

a) 经过身份验证的用户的角色和权限我还创建了自定义主体类以获取用户详细信息以及角色和权限。

b) 获取对该用户保持不变的一些信息。

void Application_OnPostAuthenticateRequest(object sender, EventArgs e)
{

// Get a reference to the current User
IPrincipal objIPrincipal = HttpContext.Current.User;

// If we are dealing with an authenticated forms authentication request
if ((objIPrincipal.Identity.IsAuthenticated) && (objIPrincipal.Identity.AuthenticationType == "Forms"))
{
CustomPrincipal objCustomPrincipal = new CustomPrincipal();
objCustomPrincipal = objCustomPrincipal.GetCustomPrincipalObject(objIPrincipal.Identity.Name);
HttpContext.Current.User = objCustomPrincipal;
CustomIdentity ci = (CustomIdentity)objCustomPrincipal.Identity;
HttpContext.Current.Cache["CountryID"] = FatchMasterInfo.GetCountryID(ci.CultureId);
HttpContext.Current.Cache["WeatherLocationID"] = FatchMasterInfo.GetWeatherLocationId(ci.UserId);
Thread.CurrentPrincipal = objCustomPrincipal;
}
}

我的问题如下:

  1. 每次请求都会触发此事件。因此对于代码执行的每个请求?
  2. 我的做法对不对?
  3. 在这个事件中添加HttpContext.Current.Cache是​​正确的还是我们应该把它移到Session_Start

最佳答案

  1. 是的,每个请求都会触发此事件
  2. 是的,您可以使用此事件获取经过身份验证的用户的信息
  3. 不,不要使用 HttpCurrent.Current.Cache 来存储用户特定信息,因为缓存对所有用户都是通用的,您会遇到冲突。请改用 HttpContext.Current.Session,因为这将特定于用户。

关于authentication - Global.asax 事件 : Application_OnPostAuthenticateRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147266/

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