Umbraco 7自定义cookies

17 浏览
0 Comments

Umbraco 7自定义cookies

我在Umbraco旁边运行一个MVC网站。该MVC网站与Umbraco完全独立地处理其自己的身份验证,与此同时也不使用ASP.NET Forms身份验证。它设置一个cookie并在内部使用它来跟踪事物。

大部分情况下一切都运行正常,但是如果我使用上述设置的cookie登录到我的MVC网站,并尝试使用正确的Umbraco凭据登录到管理部分,虽然它会验证我并将我重定向到管理部分,但WebAPI调用开始失败。首先是对/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck的调用,它返回一个417 Missing token null的HTTP错误响应。

如果我删除自定义的cookie并刷新页面,一切都正常。

我不明白为什么我的cookie会干扰Umbraco的cookie。它并没有使用ASP.NET Forms身份验证或其他任何东西。

0
0 Comments

Umbraco 7自定义cookie问题的原因是请求未发送所需的angular CSRF头+ cookie。不确定为什么会出现这种情况,但如果是由于自定义cookie的错误,那就很奇怪。也许您可以告诉我们更多关于您的问题的信息:cookie名称/值,重现步骤,具体的Umbraco版本,托管环境等等......

关于正在进行的一些信息,返回此错误的代码在这里:

https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs#L94

这是设置CSRF cookie的位置:

https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/SetAngularAntiForgeryTokensAttribute.cs

并且此属性应用于两个操作,一个用于登录,一个用于检索当前用户数据:

- https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Editors/AuthenticationController.cs#L103

- https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Editors/AuthenticationController.cs#L84

这是在JS中设置头的位置:

https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web.UI.Client/src/init.js#L11

根据您的托管环境/设置,有一些奇怪的报告称某些防火墙会剥离/更改数据,例如:

http://our.umbraco.org/forum/umbraco-7/using-umbraco-7/47340-Umbraco-7-plus-ISA-Server-2006

希望根据上述信息,您可能能够确定问题的起因。

0
0 Comments

问题的出现的原因是可能是由于在自定义cookie中使用了Umbraco保留的键值,导致读取到错误的cookie,从而引发问题。解决方法是简单地将cookie重命名。

另一种可能的情况是,HTTP请求将始终包含与请求资源的域/路径匹配的所有cookie。它们首先按路径长度排序,其次按创建时间排序。如果Umbraco后端以索引号(甚至不会感到惊讶)的方式找到用于身份验证的cookie,而不是按键值,则自定义cookie会导致索引发生偏移,从而使Umbraco查看错误的cookie。

因此,如果重命名cookie没有起作用,可以尝试将cookie的路径设置为最短可能的路径,这将使浏览器将cookie放在列表的更后面,从而不会导致索引偏移。

这只是一个理论,所以我很想听听它的效果如何 🙂

这是相关的代码片段:[https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web/Editors/UpdateCheckController.cs](https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web/Editors/UpdateCheckController.cs) 我没有看到cookies是按索引号找到的任何迹象,抱歉 🙂

我在后台使用一个会话。一旦设置会话,就会添加一个名为ASP.NET_SessionId的额外cookie。该cookie以字母'A'开头,并且是索引中的第一个。之后,我也遇到了这些错误。

我对这个消息感到非常高兴 🙂

0