2017-07-15 23 views
1

我想使用IdentityManager(只是第一次),它看起来非常伟大,它是创建角色(这很酷),但为什么它不绑定用户与选定的角色(int idm),因为如果当我在Home/Contact(例如)使用属性[Authorize(Roles =“Admin”)]不起作用。 它不会将所选角色(从用户界面)保存到数据库中的AspNetUserRoles-table。它只保存到AspNetClaims表。 IdentityManager的错误?asp.net identitymanager不起作用,他不绑定用户与数据库中的角色(表:AspNetUserRoles)

+0

您必须在将角色添加到用户后再次登录。 –

+0

我试过了,这是行不通的,因为绑定的[User-> Role]没有保存在数据库AspNetUserRoles-table(它应该在那里存储)。 – Azamat

+0

在这种情况下,请显示您尝试保存所选角色的代码。 –

回答

0

您可以尝试AuthorizeAttribute并在其中设置自定义错误消息。

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); 
    } 
} 

控制器API方法,其中使用上述授权属性。

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

是的,AuthorizeAttribute工作正常,但问题是在IdentityManager。它不想保存选定的角色(从IDM数据库中的AspNetUserRoles-table,它将jsust保存到AspNetClaims-table。IdentityManager的bug? – Azamat