c# - 从类调用接口时出现 ArgumentNullException
问题描述
我正在尝试通过使用策略来设置授权,因为由于某种原因 ClaimsPrinciple 不起作用,所以我正在尝试这个。
我目前的问题是service
返回为空。我试过UserManager<IdentityUser> UserManager = new UserManager<IdentityUser>();
了,但是它给了我一个错误。
public class AdminRequirementHandler : AuthorizationHandler<AdminRequirement>
{
public bool Check = false;
IServiceProvider service { get; set; }
protected override async Task HandleRequirementAsync(
AuthorizationHandlerContext context,
AdminRequirement requirement)
{
var CurrentEmail = context.User.Identity.Name;
string RoleName = requirement.ToString();
await GetData(CurrentEmail, RoleName);
}
private async Task GetData(string CurrentEmail, string RoleName)
{
var UserManager = service.GetRequiredService<UserManager<IdentityUser>>();
var user = await UserManager.FindByNameAsync(CurrentEmail);
if (user != null)
{
var adminCheck = await UserManager.IsInRoleAsync(user, RoleName);
if (adminCheck == true)
{
Check = true;
}
else
{
return;
}
}
}
}
关于如何解决它的任何想法?
解决方案
AuthorizationHandlerContext.Resource 应该是 AuthorizationFilterContext 类型。您可以从中获取 HttpContext 以及作为 ServiceProvider 的 RequestServices。
推荐阅读
- c# - 全尺寸图像的用户控件
- node.js - 尝试在生产模式下编译时 webpack 失败
- javascript - 如何在 JavaScript 生成的输出中包含 PHP 文件的内容?
- sharepoint - 如何根据另一个列表更新一个 SharePoint 2013 列表中的字段
- linux - 将jenkins.war部署在tomcat webapps文件夹中时,Jenkins电子邮件通知错误?
- docker - 为什么 docker -itd 使容器运行而 docker -d 使其退出
- python - 从子类方法更改或覆盖 str
- laravel - 方法streamDownload返回空响应,文件未下载
- git - 运行 `git push` 时远程 PowerShell 脚本挂起
- php - 无法使用 zip 文件中的“zip_read”读取所有文件