ASP.NET Core 2.1 Невозможно обмениваться файлами cookie между приложениями - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь обмениваться файлами 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-файл. Тем не менее, когда я запускаю второе приложение и перехожу к своему авторизованному контроллеру, меня возвращают на страницу входа, означающую, что я не вошел в систему. Что еще мне не хватает?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете проверить, добавили ли сеанс к вашим услугам?Я попробовал некоторый код, касающийся этого, и он прекрасно работает для меня.

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

Также добавьте usesession () в ваш метод COnfigure ().

        app.UseSession();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...