c# - 有人可以详细解释一下索赔在.net核心中的主要作用以及如何从索赔中获取信息吗?
问题描述
我创建了一个策略,我需要检查我的处理程序中的数据,例如 userId 和 companyId ...
所以从名为用户的声明主体,我需要从中获取信息,请问我该怎么做
增加处理程序:
public class AddScreaningHandler : AuthorizationHandler<AddScreaning>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AddScreaning requirement)
{
var mvcContext = context.Resource as AuthorizationFilterContext;
// get user infos
var claims = context.User.Identities.First().Claims.ToList();
var userCompanyId = context.User.HasClaim(u => u.Type == "id");
throw new NotImplementedException();
}
}
}
这是我需要政策的地方:控制器:
[Authorize(Policy = "AddScreaningHandler")]
[HttpPost("newScreening")]
public async Task<ActionResult<Screening>> createScreen(CreateScreeningDto createScreeningDto)
{
Screening screening = new Screening { creationDate = DateTime.Now, reflowId=Guid.NewGuid().ToString(), companyId = createScreeningDto.companyId, finished = false, lastUpdate = DateTime.Now, name = "", state = "screening-setup" };
_context.Screenings.Add(screening);
await _context.SaveChangesAsync();
return Ok(screening);
}
这是启动文件:
services.AddAuthorization(options =>
{
options.AddPolicy("AddScreaningHandler", policy =>
policy.Requirements.Add(new AddScreaning()));
});
services.AddSingleton<IAuthorizationHandler, AddScreaningHandler>();
}
我需要专注于我的处理程序addscreaninghandler 并获取用户信息,我该怎么做。
这是调试结果: 在此处输入图像描述
解决方案
推荐阅读
- linux - 如何使用 GIT 从远程获取所有已删除的本地文件
- mysql - SQL:如果匹配字符串,如何替换整个字段?
- python - 如何从另一条路线获取 Flask-Login 表单值
- c# - .Net framework 4.7.2 到 netcoreapp2.0 的可比性问题
- vba - 连接两个范围而不循环
- solr - Solr在比赛中空突出显示条目?
- reactjs - 如何在 React Redux 中组合数组值,例如具有相同 ID 的 SQL 连接?
- django - Django按日期过滤
- python - 尝试网页抓取时出错
- mysql - 直接从登录页面单击忘记密码时出现错误 Url not found