1

我正在尝试使用 IdentityManager(只是第一个),它看起来非常棒,它正在创建角色(很酷),但是为什么它没有将用户与所选角色(int idm)绑定,因为如果当我在 Home/Contact 中使用属性 [Authorize(Roles = "Admin")](例如)它不起作用。它不会将选定的角色(从用户界面)保存到数据库中的 AspNetUserRoles 表中。它只是保存到 AspNetClaims 表中。是 IdentityManager 的错误吗?

4

1 回答 1

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);
}
于 2017-07-15T09:16:16.580 回答