.netcore 2.2 Проблема переменной сеанса при вызове страницы из iframe

мы можем запускать переменную сеанса, когда мы напрямую входим в систему с ее локального адреса. но мы не можем установить или получить переменные из сеанса, пока мы звоним из iframe, вот наш startup.cs

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.AddCors(o => o.AddPolicy("MyPolicy", builder =>
      {
          builder.AllowAnyOrigin()
                 .AllowAnyMethod()
                 .AllowAnyHeader()
                 .AllowCredentials()
                 ;
      }));

      services.AddMemoryCache();
      services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
          .AddJsonOptions(options =>
          {
              options.SerializerSettings.ContractResolver
                  = new Newtonsoft.Json.Serialization.DefaultContractResolver();
          })
          .AddSessionStateTempDataProvider()
          .AddRazorPagesOptions(o =>
          {
              o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
          });
      ;

      services.AddDistributedMemoryCache();
      services.AddSession(options =>
      {
          options.Cookie.IsEssential = true;

      });


      services.AddHttpContextAccessor();

с этими настройками. мы можем очень хорошо управлять нашим сайтом, но когда мы вызываем его из iframe из другого домена. мы можем получить доступ к сайту, но не можем записать переменные сеанса.

Нужна помощь!!


person Faruk Güngör    schedule 04.03.2019    source источник


Ответы (1)


вот правильный ответ

настроить параметр сеанса, например

services.AddSession(options =>
    {
        options.Cookie.IsEssential = true;
        options.Cookie.SecurePolicy = CookieSecurePolicy.None;
        options.Cookie.SameSite = SameSiteMode.None;
    });

теперь это работает

и настройте часть аутентификации

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
      {
          options.LoginPath = new PathString("/login");
          options.Cookie.SameSite = SameSiteMode.None;
          options.Cookie.SecurePolicy = CookieSecurePolicy.None;
      });
person Faruk Güngör    schedule 04.03.2019