You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Server Side Blazor站点配置Windows角色组全站授权?

为Server Side Blazor配置全站Windows角色授权

1. 启用Windows身份验证

先确保项目开启Windows身份验证并禁用匿名访问:

  • 打开项目属性的「调试」选项卡,勾选「启用Windows身份验证」,取消「启用匿名访问」。
  • 或者直接修改launchSettings.json,在对应配置节点中设置:
"windowsAuthentication": true,
"anonymousAuthentication": false

2. 注册全局授权策略

Blazor Server的全站授权通过ASP.NET Core的授权体系实现,无需依赖传统web.config配置。在Program.cs中完成全局策略的定义和注册:

var builder = WebApplication.CreateBuilder(args);

// 添加Blazor核心服务
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

// 配置全局授权策略,指定允许访问的Windows角色组
builder.Services.AddAuthorization(options =>
{
    // 设置默认回退策略,全站所有请求都需满足此策略
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireRole("指定的第一个Windows角色组", "指定的第二个Windows角色组")
        .Build();
});

var app = builder.Build();

// 中间件配置(注意顺序不能错)
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

// 启用身份验证和授权中间件
app.UseAuthentication();
app.UseAuthorization();

app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

3. 自定义未授权提示(可选)

如果需要给未授权用户显示友好提示,可修改_Host.cshtml,提前做授权检查:

@page "/"
@namespace YourApp.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = null;
}

@using Microsoft.AspNetCore.Authorization
@inject IAuthorizationService AuthorizationService

@{
    // 验证用户是否属于指定角色组
    var authResult = await AuthorizationService.AuthorizeAsync(User, new[] {"指定的第一个Windows角色组", "指定的第二个Windows角色组"});
    if (!authResult.Succeeded)
    {
        <div style="text-align:center; margin-top:50px;">
            <h1>无访问权限</h1>
            <p>您所在的用户组无权访问此站点,请联系管理员。</p>
        </div>
        return;
    }
}

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <!-- 页面头部内容 -->
</head>
<body>
    <component type="typeof(App)" render-mode="ServerPrerendered" />
    <!-- 页面脚本 -->
</body>
</html>

说明

Blazor Server基于ASP.NET Core框架,授权逻辑完全沿用ASP.NET Core的体系,不再依赖传统web.config的<authorization>节点。通过设置全局FallbackPolicy,可以确保站点所有页面和请求都必须通过指定Windows角色组的验证,达到全站权限限制的目的。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:37:14