Rôle de Gestion en ASP net MVC 5 (Microsoft.AspNet.D'identité)
ASP MVC5 RC je n'ai pas le rôle du système de travail.
Ma base de données à tous les besoins des tables un rôle, mais l'épreuvage si l'utilisateur est dans le rôle toujours return false (pas de SQL exception ou quelque chose)!?
Ai-je besoin d'activer le rôle du système pour IPrincipal
quelque part?
Code de Test:
AccountController accCont = new AccountController();
//check role exist : result = true
var roleExist = await accCont.IdentityManager.Roles.RoleExistsAsync("61c84919-72e2-4114-9520-83a3e5f09de1");
//try find role by name : result = role object
var role = await accCont.IdentityManager.Roles.FindRoleByNameAsync("ProjectAdministrator");
//check with AccountController instance : result = true
var exist = await accCont.IdentityManager.Roles.IsUserInRoleAsync(User.Identity.GetUserId(), role.Id);
//check if current user is in role : result (both) = false????
var inRole = User.IsInRole(role.Id);
var inRole2 = User.IsInRole(role.Name);
J'ai aussi essayer de construire un personnalisé atténuer comme le IIdentity.GetUserId()
méthode d'extension de Microsoft.AspNet.Identity.Owin
espace de Noms.
namespace Microsoft.AspNet.Identity
{
public static class IdentityExtensions
{
public static string IsUserInRole(this IIdentity identity)
{
if (identity == null)
{
throw new ArgumentNullException("identity");
}
ClaimsIdentity identity2 = identity as ClaimsIdentity;
if (identity2 != null)
{
var result = identity2.FindFirstValue(IdentityConfig.Settings.GetAuthenticationOptions().RoleClaimType);
return null; //later result
}
return null;
}
}
}
Mais le résultat de la demande de Type RoleClaimType
est toujours null
🙁
Je suis vraiment coincé avec ce.
Merci pour votre aide! Steffen
Avez-vous essayé de l'Utilisateur.IsInRole("chaîne de nom de rôle")?
Ou vous pourriez essayer: string[] userroles = Rôles.GetRolesForUser("username") - ce doit retourner un tableau dans userroles que vous pouvez passer en revue pour déterminer s'il contient le rôle spécifique.
Ou vous pourriez essayer: string[] userroles = Rôles.GetRolesForUser("username") - ce doit retourner un tableau dans userroles que vous pouvez passer en revue pour déterminer s'il contient le rôle spécifique.
OriginalL'auteur Gordon2001 | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
J'essaie de comprendre comment utiliser des rôles dans MVC 5 moi-même, qui est ce qui m'a amené ici. Je ne peux pas répondre à votre question, mais consultez ce lien. Le téléchargé solution fonctionne hors de la boîte et j'ai déjà été en mesure de couper et de coller le code et de le faire fonctionner dans mon propre application. Maintenant, je vais essayer de comprendre pleinement ce qu'il fait.
http://www.typecastexception.com/post/2013/11/11/Extending-Identity-Accounts-and-Implementing-Role-Based-Authentication-in-ASPNET-MVC-5.aspx
Il ne peut pas répondre à votre question, mais au moins c'est un travail entièrement solution qui en fait ne fonctionne pas comme décrit, sans beaucoup de tracas, c'est donc un bon point de départ.
OriginalL'auteur Richard Waddell
User.IsInRole
est fondamentalement à la recherche à la demande de actuellement signé à l'utilisateur. Quel est votre signe dans la logique de l'air? Qu'est ce qui est responsable de la frappe de la cookie qui transforme l'identité de l'Utilisateur. Qui doit avoir de la déclaration de Rôle défini correctement pour leIsInRole
méthode fonctionne correctement.avez-vous la solution. J'ai mis en œuvre un utilisateur personnalisée magasin au lieu d'utiliser la valeur par défaut d'entity framework. les rôles liés méthodes ne permettent pas d'obtenir de l'appel lorsque [Autoriser(Rôles = "Admin")] est exécuté
J'ai trouvé la source de mon problème et posté la réponse here.
OriginalL'auteur Hao Kung