Tengo una aplicación en la que a los usuarios se les pueden asignar los siguientes roles:
Un usuario puede haber asignado dos o más funciones, p. tanto SuperAdmin como Usuario. Mi aplicación usa reclamos y, por lo tanto, también quiero autenticar los roles de usuario a través de reclamos. me gusta:
[Authorize(Roles="Admin")]Lamentablemente, no sé cómo puedo agregar varios roles a mi ClaimTypes.Role. Tengo el siguiente código:
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, name), new Claim(ClaimTypes.Email, email), new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin") }, "ApplicationCookie");Como puede ver, traté de agregar más roles para ilustrar, pero obviamente está hecho de manera incorrecta y, por lo tanto, no funciona. Por lo tanto, cualquier ayuda es muy apreciada.
Una identidad de notificaciones puede tener varias notificaciones con el mismo ClaimType. Eso hará posible usar el método HasClaim para verificar si un rol de usuario específico está presente.
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, name), new Claim(ClaimTypes.Email, email), new Claim(ClaimTypes.Role, "User"), new Claim(ClaimTypes.Role, "Admin"), new Claim(ClaimTypes.Role,"SuperAdmin") }, "ApplicationCookie");@Parameswar Rao explicó bien pero en caso de roles dinámicos
Por ejemplo, un objeto de usuario ya tiene un rol de propiedad de tipo lista como
luego usando funciones locales
ClaimsIdentity getClaimsIdentity() { return new ClaimsIdentity( getClaims() ); Claim[] getClaims() { List<Claim> claims = new List<Claim>(); claims.Add(new Claim(ClaimTypes.Name, user.UserName)); foreach (var item in user.Roles) { claims.Add(new Claim(ClaimTypes.Role, item)); } return claims.ToArray(); } } var tokenDescriptor = new SecurityTokenDescriptor { Subject = getClaimsIdentity() }