2017-07-15 2 views
1

J'essaie d'utiliser IdentityManager (juste d'abord), et il semble très utile, et il crée le rôle (c'est cool), mais pourquoi il n'est pas lié à l'utilisateur avec le rôle sélectionné (int idm), car si j'utilise l'attribut [Authorize (Roles = "Admin")] dans Home/Contact (par exemple) ne fonctionne pas. Il ne sauvegarde pas les rôles sélectionnés (de l'interface utilisateur) dans la table AspNetUserRoles dans la base de données. Il vient d'être enregistré dans AspNetClaims-table. Le bug d'IdentityManager?asp.net identitymanager ne fonctionne pas, il ne lie pas l'utilisateur avec le rôle dans db (table: AspNetUserRoles)

+0

Vous devez vous reconnecter après avoir ajouté le rôle à l'utilisateur. –

+0

J'ai essayé, ce n'est pas de travail, car cette liaison [Utilisateur-> Rôle] n'est pas enregistrée dans la base de données AspNetUserRoles-table (il devrait y être stocké). – Azamat

+0

Dans ce cas, veuillez indiquer le code dans lequel vous essayez d'enregistrer les rôles sélectionnés. –

Répondre

0

Vous pouvez essayer AuthorizeAttribute et définir un message d'erreur personnalisé.

public class WebApiAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext) 
    { 
     if (!actionContext.RequestContext.Principal.Identity.IsAuthenticated) 
     { 
      //Logic for when api not authenticated 
     } 
     base.HandleUnauthorizedRequest(actionContext); 
    } 
} 

Méthode d'API du contrôleur dans laquelle l'attribut d'autorisation ci-dessus est utilisé.

[HttpGet] 
[WebApiAuthorizeAttribute(Roles="Admin")]  
public async Task<HttpResponseMessage> TestMethod() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK); 
} 
+0

Oui, AuthorizeAttribute fonctionne très bien, mais le problème est dans IdentityManager. Il ne veut pas sauvegarder les rôles sélectionnés (de idm -user-interface) à AspNetUserRoles-table dans la base de données.Il a enregistré jsust à AspNetClaims-table.Le bogue d'IdentityManager? – Azamat