IAuthorizationMiddlewareHandler 不检查角色

问题描述 投票:0回答:1

我在 blazor wasm 应用程序的服务器应用程序中有以下代码

public class BlazorAuthorizationMiddlewareResultHandler:IAuthorizationMiddlewareResultHandler
{
    public Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
    {
            return next(context);
    }
}

这是为了解决 .net 8 中 Blazors 身份验证中的一个烦人的错误。当类上有一个普通的 [Authorize] 属性时,它可以正常工作,但是当我们添加一个角色 [Authorize(Roles="test")] 时,它会工作得很好。忽略角色并允许用户点击方法。

HandleAsync 方法的“AuthorizationPolicy”参数包含需求中的以下内容。

{RolesAuthorizationRequirement:User.IsInRole 必须为 true 之一 以下角色:(测试)}

如何让它检查此角色并在用户不属于该角色时拒绝请求?

asp.net-web-api blazor-webassembly
1个回答
0
投票

要检查角色要求,应该是

await defaultHandler.HandleAsync(next, context, policy, authorizeResult);

而不是

return next(context);

参考:https://learn.microsoft.com/en-us/aspnet/core/security/authorization/customizingauthorizationmiddlewareresponse?view=aspnetcore-8.0

© www.soinside.com 2019 - 2024. All rights reserved.