如何在同一域的另一个项目中使用 MVC .NET Core 身份验证 cookie
How to use an MVC .NET Core authentication cookie in another project on the same domain
我们公司有一台运行IIS的服务器,我们通过网络内的IP地址访问它。根文件夹中有多个项目。这些都是 MVC ASP .NET CORE 2 网络应用程序。
其中一个项目是一种与其他项目有 link 的中心 Web 应用程序。我需要做的是:
- 用户在使用 Microsoft.AspNetCore.Identity 和 Microsoft.AspNetCore.Authorization 的中心 Web 应用程序登录。
- 用户点击 link 将他带到另一个应用程序。 (显然,它一直工作到现在。)
- 此应用的控制器已锁定在 [Authorize] 标签下。我希望这个应用程序识别用户已经登录并使用授权 cookie 在整个应用程序中授权他们。
当用户访问第二个应用程序时,cookie 仍然存在,但我不知道如何使用 Hub 应用程序中的 cookie。我想我需要有带有身份 SQL 数据库的 DBContext,并以某种方式使用 cookie 进行身份验证。
经过多年 PHP 我是 .NET Core 的新手,现在我真的很绝望。
感谢至少阅读本文的任何人。干杯!
如果您希望 sites/apps 都使用相同的身份验证机制,那么您可以为这两个应用程序设置一个通用的机器密钥。然后第二个应用会自动从第一个应用中获取授权用户。
设置机器密钥的方法如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection().DisableAutomaticKeyGeneration();
}
从这里选取的示例代码:
更多详情:
更新:
以下是根据您的身份验证机制设置机器密钥和其他内容的方法:
services.AddDataProtection()
.PersistKeysToFileSystem("{PATH TO COMMON KEY RING FOLDER}")
.SetApplicationName("SharedCookieApp");
services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AspNet.SharedCookie";
options.Cookie.Path = "/";
});
在此处阅读更多内容:https://docs.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-3.0
我们公司有一台运行IIS的服务器,我们通过网络内的IP地址访问它。根文件夹中有多个项目。这些都是 MVC ASP .NET CORE 2 网络应用程序。
其中一个项目是一种与其他项目有 link 的中心 Web 应用程序。我需要做的是:
- 用户在使用 Microsoft.AspNetCore.Identity 和 Microsoft.AspNetCore.Authorization 的中心 Web 应用程序登录。
- 用户点击 link 将他带到另一个应用程序。 (显然,它一直工作到现在。)
- 此应用的控制器已锁定在 [Authorize] 标签下。我希望这个应用程序识别用户已经登录并使用授权 cookie 在整个应用程序中授权他们。
当用户访问第二个应用程序时,cookie 仍然存在,但我不知道如何使用 Hub 应用程序中的 cookie。我想我需要有带有身份 SQL 数据库的 DBContext,并以某种方式使用 cookie 进行身份验证。
经过多年 PHP 我是 .NET Core 的新手,现在我真的很绝望。
感谢至少阅读本文的任何人。干杯!
如果您希望 sites/apps 都使用相同的身份验证机制,那么您可以为这两个应用程序设置一个通用的机器密钥。然后第二个应用会自动从第一个应用中获取授权用户。
设置机器密钥的方法如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection().DisableAutomaticKeyGeneration();
}
从这里选取的示例代码:
更多详情:
更新:
以下是根据您的身份验证机制设置机器密钥和其他内容的方法:
services.AddDataProtection()
.PersistKeysToFileSystem("{PATH TO COMMON KEY RING FOLDER}")
.SetApplicationName("SharedCookieApp");
services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AspNet.SharedCookie";
options.Cookie.Path = "/";
});
在此处阅读更多内容:https://docs.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-3.0