我在 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 之一 以下角色:(测试)}
如何让它检查此角色并在用户不属于该角色时拒绝请求?
要检查角色要求,应该是
await defaultHandler.HandleAsync(next, context, policy, authorizeResult);
而不是
return next(context);