在所有 Blazor 页面上都需要授权

Fra*_*nky 11 blazor blazor-server-side asp.net-blazor

我正在使用 Blazor 并创建了一个服务器托管的 Web 应用程序。我必须像这样在页面顶部放置一个授权行@attribute [Authorize] 以确保用户已登录。

似乎我必须将这一行单独添加到每个页面。是否有一个全局设置可以保护应用程序中的所有页面,当然登录页面除外。

谢谢!

Isa*_*aac 20

尝试将其添加到 _Imports.razor。我认为它应该工作...

在登录页面添加@attribute [AllowAnonymous]

以前从来没有这样做过。这只是一个猜测。


Sil*_*van 8

您可以通过添加授权回退策略来做到这一点:

services.AddRazorPages();

services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});
Run Code Online (Sandbox Code Playgroud)

后备身份验证策略要求对所有用户进行身份验证,Razor 页面、控制器或具有身份验证属性的操作方法除外。

这意味着您可以使用示例的属性@attribute [Authorize]( attributes ) 来自定义身份验证和授权。