ASP.NET Core 2.1无法在应用程序之间共享Cookie



我正在尝试在应用程序之间共享cookie,这样我就不必经常登录一个应用程序,然后再登录另一个。

这是我在两个应用程序上的启动

services.AddDbContext<DbContext>(options => options.UseSqlServer(Configuration["DatabaseConfiguration:ConnectionString"]));
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver
= new Newtonsoft.Json.Serialization.DefaultContractResolver();
});
services.AddIdentity<ApplicationUsers, Roles>()
.AddEntityFrameworkStores<DbContext>()
.AddDefaultTokenProviders();
services.AddScoped<LogsData>();
services.AddScoped<ApplicationUsersData>();
services.AddScoped<CustomClaimsCookieSignInHelper<ApplicationUsers>>();
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireDigit = false;
options.Password.RequireLowercase = false;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedPhoneNumber = false;
});
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDataProtection()
.PersistKeysToFileSystem(KeyRingConfigurationManager.GetBasePath())
.SetApplicationName("AppName");
services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AppName.Shared";
});
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Account/AccessDenied";
options.SlidingExpiration = true;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

当我运行应用程序时,我注意到在我的Key文件夹中,出现了一个密钥xml文件。然而,当我启动第二个应用程序并导航到授权的控制器时,我会被踢回登录页面,这意味着我没有登录。我还缺少什么?

您能检查一下添加会话的情况吗?我已经尝试了一些关于这方面的代码,它确实对我很好。

services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromDays(2);
options.Cookie.HttpOnly = true;
options.Cookie.Name = CookieAuthenticationDefaults.AuthenticationScheme;
});

同时在您的COnfigure((方法中添加usesession((。

app.UseSession();

最新更新