2017-11-07 5 views
1

私は承認されたコントローラアクションを使用していますが、そのうちのいくつかはロールベースです。Web API開発時間許可属性無効

[Authorize(Roles = "SuperUsers")] 
    public class UserGroupController : ApiController 
    { 
     private readonly MyContext context = new MyContext(); 

     [HttpGet] 
     public async Task<IHttpActionResult> Get() 
     { 
      ....... 
     } 
    } 

このコントローラを使用する場合、私の要求は401の不正なメッセージを返します。

だから私はこのようにそれを無効にするにはAuthrization属性を作成しました:

public class DevelopmentAuthorizationFilter:AuthorizeAttribute 
{ 
    protected override bool IsAuthorized(HttpActionContext actionContext) 
    { 
     return actionContext.Request.RequestUri.IsLoopback || base.IsAuthorized(actionContext); 
    } 
} 

そして私はHttpConfigurationフィルタにこれを追加しました。

public void Configuration(IAppBuilder app) 
    { 
     var configuration = new HttpConfiguration(); 
     ............. 
     configuration.Filters.Add(new DevelopmentAuthorizationFilter()); 
    } 

しかし、動作しません。これをどうすれば解決できますか?

+1

開発目的で、またはあなたの意図は何ですか? –

答えて

0

コントローラに2つの認証フィルタを適用しました。グローバルレベルでDevelopmentAuthorizationFilter(これがパスされます)とコントローラーレベルでAuthorizeAttribute(これはパスされません)。コントローラーレベルでDevelopmentAuthorizationFilterだけを使用すると問題が解決するはずです。

[DevelopmentAuthorizationFilter(Roles = "SuperUsers")] 
public class UserGroupController : ApiController 
{ 

} 
関連する問題