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

Blazor多应用共享用户登录权限的可行性及实现方案问询

Blazor Identity 跨应用登录凭据共享方案

默认行为说明

同一IIS站点下的两个独立Blazor应用,默认不会自动共享登录凭据。哪怕它们共用同一个SQL数据库,每个应用的Identity配置都是独立的——Cookie名称、加密密钥等参数默认不统一,导致彼此无法识别对方生成的登录Cookie。

实现共享登录的具体步骤

因为两个应用已经共享数据库,核心是统一Cookie认证和数据保护配置,让双方能互相识别登录状态,同时保留各自的注册/登录入口。

1. 统一Identity基础配置

把Identity相关的实体(比如ApplicationUser)、数据库上下文ApplicationDbContext抽成一个独立的类库,让两个应用都引用这个类库,确保使用完全一致的用户模型和数据库访问逻辑。

然后在两个应用的Program.cs中,统一Cookie认证的关键参数:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        // 统一Cookie名称,两个应用必须完全一致
        options.Cookie.Name = ".EnglishEdu.SharedAuth";
        // 同一IIS站点下,Cookie路径设为根路径,确保全站有效
        options.Cookie.Path = "/";
        // 同一域名下无需指定Domain,设为null即可
        options.Cookie.Domain = null;
    });

// 统一Identity配置,使用共享的用户实体和DbContext
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();

2. 共享数据保护密钥

Blazor用数据保护系统加密登录Cookie,两个应用必须使用相同的加密密钥才能解密彼此的Cookie。有两种简单的实现方式:

  • 本地文件共享(适合IIS部署):
    在两个应用的Program.cs中配置数据保护,指向同一个本地文件夹(确保IIS应用池账户有读写权限):
    builder.Services.AddDataProtection()
        // 指定共享密钥的存储路径
        .PersistKeysToFileSystem(new DirectoryInfo(@"D:\SharedAuthKeys"))
        // 统一应用名称,确保密钥分组一致
        .SetApplicationName("EnglishEduPlatform");
    
  • 云部署场景:可以用Azure密钥保管库或其他密钥管理服务存储密钥,两个应用配置相同的访问权限即可。

3. 同步中间件配置

两个应用的中间件顺序必须一致,确保认证先于授权:

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

// 这两行顺序不能乱
app.UseAuthentication();
app.UseAuthorization();

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

4. 保留独立的注册/登录入口

游戏应用不需要移除自己的注册、登录页面,外部用户可以直接在游戏应用完成注册登录;而主站已登录的用户访问游戏应用时,系统会自动识别共享的Cookie,无需重复登录。

验证要点

  • 主站登录后,直接访问游戏应用的受保护页面(比如需要登录才能进入的游戏模块),应该自动处于登录状态
  • 在游戏应用注册新用户,用该账号登录主站,应该能正常访问主站的受保护内容
  • 确保两个应用的.NET版本一致,避免数据保护算法不兼容导致的解密失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:31:15