【发布时间】:2021-06-05 16:01:41
【问题描述】:
授权集
services.AddAuthorization(options =>
{
options.AddPolicy("MustNutritionist", policy =>
policy.RequireClaim("nutritionistId"));
});
控制器
NutritionistUpdateModel 有 id 字段。
[Authorize(Policy = "MustNutritionist")]
public BaseResponseModel PostEdit([FromForm] NutritionistUpdateModel nutritionistUpdateModel)
{
try
{
var result = nutritionistService.EditNutritionist(nutritionistUpdateModel);
if (result)
{
return new SuccessResponseModel<bool>(result);
}
else
{
return new BaseResponseModel(ReadOnlyValues.NutritionistNotFound);
}
}
catch (Exception ex)
{
return new BaseResponseModel(ex.Message);
}
}
令牌生成声明
claims.Add(new Claim("nutritionistId", nutritionistId.ToString()));
问题
我想检查 NutritionistUpdateModel.Id 和 Claims.nutritionistId 的方程式。我可以检查下面的代码。但是我必须写很多 if else 语句。有什么简单的方法吗?
private bool ChechNutritionistAuthorize(int nutritionistId)
{
var currentUser = HttpContext.User;
var nutritionistIdClaim=Int32.Parse(currentUser.Claims.FirstOrDefault(c => c.Type == "NutritionistId").Value);
if (nutritionistIdClaim == nutritionistId)
{
return true;
}
else
{
return false;
}
}
【问题讨论】:
-
您要提交什么查询?
-
是的,我使用了 HttpPost 方法。我想更新用户数据。
标签: asp.net api .net-core jwt claims-based-identity