gpt4 book ai didi

c# - ASP .NET Core Razor 页面中的授权

转载 作者:太空狗 更新时间:2023-10-29 23:12:08 41 4
gpt4 key购买 nike

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

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

Razor 页面操作代码:

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

服务配置中的代码:

_ = services.AddAuthorization(options => {
options.AddPolicy("test", policy =>
policy.RequireAssertion(context =>
false));
});

我希望如果我调用操作或端点服务,例如

GET /Account?handler=Create

然后请求将被拒绝并返回 403 状态响应,因为“测试”策略声明每个人都未经授权。然而,在实际操作中,该 Action 被成功调用。

最佳答案

Razor Pages 在处理程序 级别不支持[Authorize]。即,您只能在 PageModel 本身上作为一个整体 授权页面,如 docs 中所述:

Policies can not be applied at the Razor Page handler level, they must be applied to the Page.

如果授权整个页面不是一个可行的解决方案,您可能需要将 OnGetCreateAsync 处理程序移动到 Controller /操作对中,这可以归因于 [Authorize] 相应地。

还有一个相关的GitHub issue在文档中:

The [Authorize] filter attribute has been supported since 2.0 in Razor Pages, but note that it works at the page model class level

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

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

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com