2017-07-15 5 views
1

私はIdentityManagerを使用しようとしています。なぜなら、ホーム/連絡先(たとえば、)で[Authorize(Roles = "Admin")]属性を使用すると、そのロール(int idm)を使用してユーザーをバインドしない理由動作しません。 データベースの選択されたロール(ユーザーインターフェイスから)をAspNetUserRolesテーブルに保存しません。 AspNetClaims-tableに保存されました。 IdentityManagerのバグですか?asp.net identitymanagerが動作しません、彼はdb(table: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); 
    } 
} 

上記のauthorize属性を使用するコントローラのapiメソッド。

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

はい、AuthorizeAttributeは正常に動作しますが、問題はIdentityManagerにあります。選択したロールを保存したくない(idmから) -user-interface)をデータベースのAspNetUserRoles-tableに追加すると、AspNetClaims-tableにjsustが保存されました。 – Azamat

関連する問題