2016-07-14 7 views
2

私はMVC 6のWebサイト(asp.net core/5)を持っています。ユーザーが特定のロールにいるかどうかを確認する必要があります。 User.IsInRole("{rolename}")を呼び出すたびに、毎回falseを返します。私がRoleRepositoryを呼び出すだけでうまくいきます。ASP.NETコアのUser.IsInRoleをオーバーライドしました

User.IsInRole()機能をどこかでオーバーライドする必要がありますか、またはASP.NETコアでそのメソッドが廃止されていますか?ここで

は、これまでの私の実装です:

 if (User.IsInRole("Admin") || User.IsInRole("SuperUser") || User.IsInRole("DataIntegrity")) 
     { 
      model.IsDataIntegrity = true; 
     } 

私は承認ポリシーを経由して、それを呼び出したときにこれは、このように、正常に動作します

[Authorize("DataIntegrity")] 
    [ValidateAntiForgeryToken] 
    [HttpPost] 
    [Route("team/edit/{schoolId:int:min(1)}/{schoolName?}")] 
    public async Task<IActionResult> Edit(SchoolEditViewModel model) 
    { 
     model.SchoolInfo = await _schoolRepo.GetSchoolInfo(model.SchoolId, _currentSeason); 

     IsModelValid(model); 
     if (!ModelState.IsValid) 
     { 
      return View(await ApplyUnboundProperties(model)); 
     } 

     await SaveSchool(model); 

     return RedirectToAction("Live", "SchoolMain", new {schoolId = model.SchoolId, schoolName = model.SchoolInfo.SchoolName}); 
    } 
+1

は 'IPrincipal'のものはまだそれを持っていませんか?あなたは、同じことを達成するための拡張メソッドを書くことができます。属性はまだコアに存在しますか? –

+0

githubのaspnetソースコードの例を以下に示します:https://github.com/aspnet/Mvc/blob/dev/test/WebSites/Filters/AuthorizeUserAttribute.cs –

+0

あなたは私たちに 'IAuthorizationFilter'のものがあるようです。 –

答えて

0

もっとグーグルとここで私は私の作品を見つけたものです:

Checking login user AuthorizePolicy in Razor page on Asp.Net Core

具体的には、I私のビュー(またはコントローラ)にIAuthorizationServiceを注入し、次にAuthorizeAsyncメソッドを呼び出す必要がありました。 (ビュー)

@inject IAuthorizationService AuthorizationService 

... 

@if (await AuthorizationService.AuthorizeAsync(User, "PolicyName")) 
{ 
    <p>This paragraph is displayed because you fulfilled PolicyName.</p> 
} 
関連する問題