【问题标题】:Embeded Razor Page in a PHP site does not save cookies - Identity doesn't workPHP 站点中的嵌入式 Razor 页面不保存 cookie - 身份不起作用
【发布时间】:2019-11-29 14:04:52
【问题描述】:

我已经在给定的 PHP 端嵌入了一个新开发的 Razor 页面(Core 2.2)。

此 Razor Web 应用程序使用 Identity 并托管在 MS Azure 中。

当调用 myWebApp.azurewebsites.net 时,Razor Web 应用会按预期工作 - 使用 CookiePolicy 和 Identity 进行登录、注册等。

使用标签将此 Razor Web 应用程序嵌入到 PHP Web 端后,嵌入的 Razor Web 应用程序的 Cookie 策略和身份的 cookie 看起来不起作用。

当即接受 cookie 政策时,它会在转到 web-app 的另一个页面时弹出。进一步:通过身份登录后,我可以看到,用户没有通过身份登录。通常,Web 应用程序会显示登录用户的电子邮件地址 - 但嵌入此 PHP 页面时不会显示。非常感谢您的帮助。

我已经尝试发送PHP页面的头部信息以允许使用Cookie,但没有帮助:

header('P3P:CP=HONK');
header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

我认为这不是 Razor 页面中的内容,因为它可以独立运行...

如果您需要更多信息,请给我提示。提前非常感谢。

【问题讨论】:

    标签: c# php razor-pages


    【解决方案1】:

    我找到了问题的解决方案。它与容器(PHP 文件)无关,但它是 Startup.cs 文件中服务的设置错误配置。

    对于缺少的 cookie 同意横幅,缺少一个条目:

     services.Configure<CookiePolicyOptions>(options =>
                {
                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                    **// This is needed for cookie-consent when embedded in a web-site(iFrame, Embed, Object)               
                    options.ConsentCookie.SameSite = SameSiteMode.None;** 
                });
    

    此外,还必须为不同的站点设置整体应用程序 cookie:

    services.ConfigureApplicationCookie(options =>
                {                
                    **// Needed for usage with different domains, when embedded (iFrame, Embed, Object) 
                    options.Cookie.SameSite = SameSiteMode.None;** 
                    options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
                    options.LoginPath = "/Identity/Account/Login";
                    // ReturnUrlParameter requires 
                    //using Microsoft.AspNetCore.Authentication.Cookies;
                    options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
                    options.SlidingExpiration = true;
                });
    

    设置service.ConfigureApplicationCookie也很重要AFTER 拨打AddIdentityAddDefaultIdentity

    这对我们有用。如果它也适合你,我会很高兴为你点赞 :-)

    最好的问候,克里斯

    【讨论】:

      猜你喜欢
      • 2022-07-20
      • 2011-09-27
      • 2017-04-10
      • 2011-04-12
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      相关资源
      最近更新 更多