我正在尝试在应用程序之间共享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密钥文件。但是,当我启动第二个应用程序并导航到经过授权的控制器时,我又被踢回到了登录页面,这意味着我没有登录。我还缺少什么?
答案 0 :(得分:0)
您能否检查有关添加服务会话的信息?我已经尝试过一些与此相关的代码,并且对我来说效果很好。
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();