2016-10-26 13 views
0

https://docs.asp.net/en/latest/security/authorization/policies.htmlとしてカスタムポリシー=ベース認証を実装しました。asp.netコアによるカスタムポリシーベースの認証、ビューの問題

これは、コントローラで[Authorize]でアクセスしたときに成功しました。しかし、私は私のビューでそれを以下のように使用しようとしました。私はcontext.Resourceが問題になっている。

私はmvcを使い慣れているので、どんな助けにも感謝しています。

あなたはViewContextで設定リソースパラメータでAuthorizeAsyncのオーバーロードメソッドを使用することができますビューで見る

@if (await AuthorizationService.AuthorizeAsync(User, "IsRegisteredUser")) 
{ 
    <li><a asp-area="" asp-controller="Solution" asp-action="Index">Solutions</a></li> 
} 

認証ハンドラ

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IsRegisteredUserRequirement requirement) 
    { 

      if(context.User.Identity.IsAuthenticated) 
      { 
       var mvcContext = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext; 


      } 


     return Task.CompletedTask; 
    } 

答えて

0

:に続いて

await AuthorizationService.AuthorizeAsync(User, ViewContext, "YourPolicyName"); 

ハンドラは、リソースをActionContextベースクラスにキャストすることができます。そこから、ViewConテキストとAuthorizationFilterContextは継承:あなたは、その後のHttpContext、にModelStateとRouteDataへのアクセス権を持っている

var actionContext = context.Resource as Microsoft.AspNetCore.Mvc.ActionContext; 

関連する問題