Так вот ломаются моего вопроса ступенчато:Как ссылаться на HttpContext.Current.User после Application_PostAuthenticateRequest в MVC?
- пользователь входит в систему с помощью Google.
- На входе в систему обратного вызова, информация о пользователе собирается
- Роли назначаются на основе пользователя создается
- FormsAuthenticationTicket который передает пользователю/роли в Application_PostAuthenticateRequest в Global.asax
- В этом запросе GenericPrinciple создается из билета проверки подлинности и ролей
- HttpContext.Current.User устанавливается переменной, приведенной выше
Теперь мой вопрос, теперь, когда я установил, кто т он текущий пользователь, который использует веб-сайт, как я могу ссылаться на них? После завершения проверки подлинности сообщения я проверяю текущего пользователя, и он равен нулю. Должен ли я устанавливать принцип на другую переменную, отличную от HttpContext.Current.User?
Ответный
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
...
// Get roles for current user
string roles = "bob,adminbob,cthulu";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
loginInfo.Email,
DateTime.Now,
DateTime.Now.AddMinutes(30), // value of time out property
false,
roles,
FormsAuthentication.FormsCookiePath);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
Response.Cookies.Add(authCookie);
...
}
Сообщение Аутентифицировать в Global.asax
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) {
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null) {
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
string[] userRoles = authTicket.UserData.Split(new Char[] { ',' });
GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(authTicket.Name), userRoles);
HttpContext.Current.User = userPrincipal; //How do I reference this in the program?
}
}
Если это тот же запрос, то печенье в Ответе. Однако он еще не вернулся, но это не в запросе, но вы пытаетесь его прочитать. –