【发布时间】:2018-11-16 04:12:14
【问题描述】:
我正在尝试在应用程序之间共享 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);
当我运行我的应用程序时,我注意到在我的密钥文件夹中,出现了一个密钥 xml 文件。但是,当我启动第二个应用程序并导航到授权的控制器时,我被踢回登录页面,这意味着我没有登录。我还缺少什么?
【问题讨论】:
-
你有两个不同的应用程序吗?
-
是的,但是应用程序 2 引用了应用程序 1 中的某些组件
-
好的。我从下面的 msdn 站点得到了一些想法。可能对你有帮助,请参考link
-
这就是我所关注的。
标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc