小编sdr*_*evk的帖子

如何更改状态代码并从失败的 AuthorizationHandler 策略添加消息

使用 .net 核心应用程序实现自定义策略。

假设我们有一个非常简单的自定义策略:

internal class RequireNamePolicy : AuthorizationHandler<RequireNameRequirement>, IAuthorizationRequirement
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RequireNameRequirement requirement)
    {
        var nameClaim = context.User.Claims.FirstOrDefault(c => c.Type == Claims.Name);
        if (nameClaim != null && nameClaim.Value == "Chimney Spork")
        {
            context.Succeed(requirement);
        }
        else
        {
            context.Fail();
        }

        return Task.CompletedTask;
    }
}

internal class RequireNameRequirement : IAuthorizationRequirement
{

}
Run Code Online (Sandbox Code Playgroud)

现在假设声明不存在,所以我们点击 context.Fail()。默认响应是没有消息正文的 403。

我的问题是,我们将在哪里更改状态代码(到 401)并返回说明问题的消息(即声明不存在)?

.net asp.net-core

8
推荐指数
3
解决办法
2944
查看次数

标签 统计

.net ×1

asp.net-core ×1