我无法在ASP .NET Core中实现基于策略的授权,以执行 Razor 页面上的操作。

我通读了this comprehensive document on authorization并将其示例用作指导。

Razor 页面 Action 代码:

[Authorize(Policy = "test")]
public async Task<IActionResult> OnGetCreateAsync(string id)

服务配置中的代码:
_ = services.AddAuthorization(options => {
    options.AddPolicy("test", policy =>
        policy.RequireAssertion(context =>
            false));
});

我希望如果我调用 Action 或端点服务,例如
GET /Account?handler=Create

那么该请求将以403状态响应被拒绝,因为“测试”策略指出每个人都是未经授权的。但是,在实际操作中,该操作已成功调用。

最佳答案

Razor Pages当前在处理程序级别不支持[Authorize]。即,您只能按照docs中的PageModel本身对页面进行整体授权:

如果从整体上对页面进行授权不是可行的解决方案,则可能需要将OnGetCreateAsync处理程序移动到 Controller /操作对中,可以将其与[Authorize]相应地赋予属性。
在文档中还有一个与此相关的GitHub issue:

如果您需要更好的解决方法,请参见akbar's answerJim Yabro's answer

关于c# - ASP .NET Core Razor页面中的授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57477614/

10-17 02:26