基于策略的授权对失败的要求的结果

时间:2019-01-04 16:33:46

标签: asp.net-core

我们正在使用基于策略的授权,其要求如下:

[Authorize(Policy = "IsUser")]

如果授权失败,我们只会得到状态为200的白页。 如果授权在ASP.NET Core中失败,我们如何控制会发生什么。 我们想要禁止的东西。

1 个答案:

答案 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”选项。

希望这会有所帮助。