私は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});
}
は 'IPrincipal'のものはまだそれを持っていませんか?あなたは、同じことを達成するための拡張メソッドを書くことができます。属性はまだコアに存在しますか? –
githubのaspnetソースコードの例を以下に示します:https://github.com/aspnet/Mvc/blob/dev/test/WebSites/Filters/AuthorizeUserAttribute.cs –
あなたは私たちに 'IAuthorizationFilter'のものがあるようです。 –