【发布时间】:2018-10-27 11:31:06
【问题描述】:
关于 User.IsInRole 的问题很多,但我找不到正确的答案。
我需要使用 AuthorizationHandler(通过授权要求)验证某个角色
我有一个 ASP.NET Core 2.1 项目,其中包含个人用户帐户。我已经为数据库播种并使用userManager.AddToRoleAsync 将用户添加到(一个角色)角色,是的,数据库显示了用户、角色和他们之间的连接。
我创建了一个 CandidateViewHandler 来控制 View-Contorller 的授权。它看起来如下
public class CandidateViewHandler : AuthorizationHandler<ViewCandidateRequirement, Candidate>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ViewCandidateRequirement requirement, Candidate resource)
{
if (context.User.Identity.IsAuthenticated)
{
if (resource.Email == context.User.FindFirst(ClaimTypes.Name).Value)
{
context.Succeed(requirement);
}
else
{
bool IsAdmin = context.User.IsInRole("Administrator");
bool IsSearch = context.User.IsInRole("Searcher");
if (IsAdmin == true || IsSearch == true)
{
context.Succeed(requirement);
}
}
}
return Task.CompletedTask;
}
}
但是,IsAdmin 和 IsSearch 总是返回 false。即使在控制器中对其进行测试,结果也保持不变。我应该在 2.1 中使用 Claims 吗?如果有,怎么做?
【问题讨论】:
标签: asp.net-mvc asp.net-core asp.net-identity claims-based-identity