我有一个自定义要求:
public sealed class MyRequirement : IAuthorizationRequirement
{
}
我在我的申请中进行了注册:
.AddAuthorization(options =>
options.AddPolicy(Policy.MyPolicy, policy => { policy.AddRequirements(new MyRequirement()); }))
为此处理程序进行一些检查:
public sealed class MyHandler : AuthorizationHandler<MyRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MyRequirement requirement)
{
if (!context.User.HasClaim(c => c.Type == CustomClaimTypes.Status))
{
//_logger.Warning($"Status missing");
context.Fail();
}
else
{
var rawStatus = context.User.Claims.Single(x => x.Type == CustomClaimTypes.Status).Value;
EnumExtensions.TryParseNullable<Status>(rawStatus, true, out var status);
switch (status)
{
case null:
//_logger.Warning($"Authentication forbidden: Unexpected status: {rawStatus}");
context.Fail();
break;
case Status.A:
case Status.B:
//_logger.Warning($"Authentication forbidden: Invalid status: {status}");
context.Fail();
break;
case Status.C:
context.Succeed(requirement);
break;
}
}
return Task.CompletedTask;
}
}
如果上下文失败,但此操作成功返回403,但我想向响应中添加自定义消息,例如记录器中的文本。
我一直在搜索它,它看起来几乎是不可能的,我不明白,因为它感觉像是非常基本的功能。
有什么想法如何向响应中添加自定义文本?
答案 0 :(得分:1)
对延迟响应表示歉意。
我通过以下方法解决了这个问题:
group_by
其中
SYMBOL variable value Sample IDs Group
TLR8 MMRF_2613_1_BM 0.58 Baseline 2613 MostUp_divided_by_LessUp
TLR4 MMRF_2613_1_BM 1.29 Baseline 2613 MostUp_divided_by_LessUp
其中ForbiddenEntityResult只是一个结果类型,您可以将其替换为任何ObjectResult。
您还可以在此处进行日志记录或处理其他结果,例如未经授权等