Eksperymentowałem z niestandardowym uwierzytelnianiem formularzy ASP.NET, a tym, co mnie myli, jest to, gdzie ustawić role przypisane do użytkownika. Odczytywanie różnych samouczków Napotkano sugestie dotyczące użycia Application_AuthenticateRequest
lub FormsAuthentication_OnAuthenticate
, z tą różnicą, że kod userPrincipal
jest przypisany do userPrincipal
przypisany do .Jaka jest różnica między Application_AuthenticateRequest i FormsAuthentication_OnAuthenticate
Context.User = userPrincipal;
i
e.User = userPrincipal;
Poniżej jest zakończona metoda wymaga każda. Czy są one funkcjonalnie równoważne, czy jest jakaś różnica, o której powinienem wiedzieć?
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
string[] roles = authTicket.UserData.Split(';');
GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(authTicket.Name), roles);
Context.User = userPrincipal;
}
}
protected void FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
string[] roles = authTicket.UserData.Split(';');
GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(authTicket.Name), roles);
e.User = userPrincipal;
}
}