c# - 在 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 中的内容,因为它可以独立运行......
如果您需要更多信息,请给我提示。提前非常感谢。
解决方案
我找到了问题的解决方案。它与容器(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
调用AddIdentity
或AddDefaultIdentity
这对我们有用。如果它也对你有用,我会很高兴 :-)
最好的问候,克里斯
推荐阅读
- php - 我在 php 中寻找比 substr_count($string, $needle, $offset, $length) 更好的算法复杂度
- html - html倒计时时间在指定时间后没有停止
- deep-learning - a.sub_(lr*a.grad) 实际上做了什么?
- markdown - 在 Docusaurus 中更改图像大小
- python - 如何在beautifulsoup findAll中的类之间使用OR运算符?
- arrays - 在 ColdFusion 中是否可以将数组传递给自定义标签?
- ansible - ansible中的模板是幂等的吗?
- multithreading - 如何防止在 FOR 循环中切换线程,同时使用 omp 指令
- ios - react-native-permissions 意外令牌失败 - 在 ios 上构建时
- c# - 如何将字典作为数据源绑定到 ListBox 并覆盖 displayMember 的默认 ToString() 以显示项目?