我无法在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 answer和Jim Yabro's answer。
关于c# - ASP .NET Core Razor页面中的授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57477614/