AspNetCore EF6 Identity 在应用程序之间共享 Cookie 身份验证

问题描述 投票:0回答:2

我想在我的域中设置多个网络应用程序。我正在将 VS2022 解决方案与多个项目和共享类库一起使用,以将所有内容放在一起。

我希望如果我登录该应用程序并导航到任何其他应用程序,我也会自动登录该应用程序,当然注销,效果相同。

目前,我可以登录应用程序 1,转到应用程序 2 并在那里登录,但当我返回到应用程序 1 时,我已注销。

目前在我的初创公司中,我有以下内容

            services.ConfigureApplicationCookie(options =>
            {
                options.Cookie.Name = "AspNet.SharedCookie";
                options.Cookie.Path = "/";
                options.Cookie.Domain = "localhost"; // "*.example.com";
                options.Cookie.SameSite = SameSiteMode.Lax; 
            });
            services.AddAuthentication("AspNet.SharedCookie");

身份平台是来自sql server的

Microsoft.Identity
。我认为那里没有任何问题,因为我在任何地方都成功登录/退出。

            services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = false)
                .AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

我的应用程序当前运行 localhost:1000、localhost:2000、localhost:3000 等,但这最终会变成 app1.example.com、app2.example.com 等。

AspNet.SharedCookie
在所有网站上都可用,但显然会根据当前应用程序进行更改。

我虽然更改了应用程序 ID,但我认为这不是一个好主意,而且没有效果。

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>aspnet-DEV.app1-USE THIS SAME ID IN ALL APPS</UserSecretsId>
  </PropertyGroup>

如何才能正确地使所有应用程序保持标准并具有自己的登录身份,但切换应用程序应保留该登录信息?

authentication cookies asp.net-core-mvc identity
2个回答
1
投票

感谢您的分享,我通过添加以下代码解决了问题。

services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(@"c:\temp-keys")).SetApplicationName("testapp");

测试结果:

我的代码


0
投票

这对我不起作用,您可以分享 github 存储库以及更新的代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.