Я использую событие Application_OnPostAuthenticateRequest
в global.asax
, чтобы получить
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;
}
}
У меня следующий вопрос:
- Это событие срабатывает каждый раз для каждого запроса. Следовательно для каждого запроса код выполняется?
- Мой подход правильный или нет?
- Правильно ли добавить HttpContext.Current.Cache в это событие или нам следует переместить его в Session_Start