我们正在使用基于策略的授权,其要求如下:
[Authorize(Policy = "IsUser")]
如果授权失败,我们只会得到状态为200的白页。 如果授权在ASP.NET Core中失败,我们如何控制会发生什么。 我们想要禁止的东西。
答案 0 :(得分:0)
请注意,为使授权在asp.net核心中正常工作,应正确配置身份验证机制。 Microsoft's documentation:“授权需要身份验证机制”。
不清楚您是使用自己的代码进行身份验证还是使用asp.net核心提供的服务(Cookie身份验证/身份等)。几种方案和relevant code can be found here。
要回答您的问题,您需要配置身份验证选项-例如“ LoginPath”。此路径将与授权失败时用于重定向到的“页面”相对应。
下面是一个示例(使用基于Cookie的身份验证时):
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
}).AddCookie(o => {
o.LoginPath = "/Account/Login";
});
在上面的示例中(将代码添加到“ ConfigureServices”方法中),添加了基于Cookie的身份验证。设置了默认身份验证和默认“挑战”方案。此外,为Cookie身份验证选项设置了“ LoginPath”选项。
希望这会有所帮助。