Asp.net mvc Umbraco 7定制饼干

Asp.net mvc Umbraco 7定制饼干,asp.net-mvc,cookies,umbraco,umbraco7,Asp.net Mvc,Cookies,Umbraco,Umbraco7,我在翁布拉科附近运行一个MVC站点。MVC站点完全独立于Umbraco处理自己的身份验证,而ASP.NET为此形成了身份验证。它设置一个cookie,并在内部使用它来跟踪事情 大部分情况下,一切正常,但如果我使用上述cookie集登录MVC站点,我会尝试使用正确的Umbraco凭据登录到Umbraco管理部分,它会对我进行身份验证并将我重定向到管理部分,但WebAPI调用开始失败。第一个是调用:/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck

我在翁布拉科附近运行一个MVC站点。MVC站点完全独立于Umbraco处理自己的身份验证,而ASP.NET为此形成了身份验证。它设置一个cookie,并在内部使用它来跟踪事情

大部分情况下,一切正常,但如果我使用上述cookie集登录MVC站点,我会尝试使用正确的Umbraco凭据登录到Umbraco管理部分,它会对我进行身份验证并将我重定向到管理部分,但WebAPI调用开始失败。第一个是调用:
/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck
,返回
417缺失令牌null
HTTP错误响应

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


我不明白我的饼干怎么会干扰翁布拉科的。它没有使用ASP.NET表单身份验证或任何东西。

我最初的想法是,您无意中使用了Umbraco保留的cookie键值,这可能导致读取错误的cookie,从而导致问题。解决这个问题的方法是简单地重命名cookie

如果不是这样,我有另一个理论:

HTTP请求将始终包括路径/域与您请求的资源域匹配的所有cookie。它们主要按路径长度排序,其次按创建时间排序。如果出于某种原因,Umbraco backend在列表中发现用于身份验证的cookie是通过其索引号(甚至不会感到惊讶)而不是键值,则您的自定义cookie将导致索引移动,从而使Umbraco看到错误的cookie

因此,如果重命名cookie没有任何作用,那么可以尝试的一件有趣的事情是将cookie的路径设置为尽可能短的路径,这将使浏览器将cookie放在列表的较低位置,这样索引就不会移动


不过这只是一个理论,所以我很想听听它是怎么回事:)

发生此错误是因为您的请求没有发送所需的角度CSRF头+cookie。我不知道为什么会出现这种情况,但如果这是你的定制饼干的错误,那就显得很奇怪了。也许您可以告诉我们有关您的问题的更多信息:Cookie名称/值、复制步骤、Umbraco的特定版本、托管环境等

关于发生了什么,返回此错误的代码如下:

这是设置CSRF cookies的地方:

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

这是在JS中设置标题的地方:

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


希望根据以上信息,您能够准确指出问题的起因。

这就是问题所在->我看不到任何迹象表明Cookie是通过索引号找到的,对不起:)我正在后台使用会话。设置会话时,会添加一个名为ASP.NET_SessionId的额外cookie。cookie以字母“A”开头,是索引中的第一个。在那之后,我还发现了这些错误。@snifdk我真的很高兴听到这些:)