首页 > 解决方案 > 在 PHP 站点中嵌入 Razor 页面不保存 cookie - 身份不起作用

问题描述

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

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

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

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

当 ie 接受 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 Page 中的内容,因为它可以独立运行......

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

标签: c#phprazor-pages

解决方案


我找到了问题的解决方案。它与容器(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

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

最好的问候,克里斯


推荐阅读