Les rôles sont ajoutés à la IPrincipal de la HttpContext. Vous pouvez créer un GenericPrincipal, d'analyser la liste des rôles dans le constructeur et le définir comme HttpContext.De l'utilisateur. Le GenericPrincipal sera ensuite accessible par User.IsInRole("role")
ou [Authorize(Roles="role")]
d'attribut
Une façon de le faire (en C#) est à ajouter votre rôle en tant que séparés par des virgules chaîne de caractères dans les données de l'utilisateur paramètre lors de la création de votre ticket d'authentification
string roles = "Admin,Member";
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,
userId, //user id
DateTime.Now,
DateTime.Now.AddMinutes(20), // expiry
false, //do not remember
roles,
"/");
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);
Alors accéder à la liste des rôles du ticket d'authentification et de créer un GenericPrincipal de votre Global.asax.cs
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(new Char[] { ',' });
GenericPrincipal userPrincipal =
new GenericPrincipal(new GenericIdentity(authTicket.Name),
roles);
Context.User = userPrincipal;
}
}
}