2014-12-01 4 views
5

Я запускаю сайт MVC вдоль Umbraco. Сайт MVC обрабатывает свою собственную аутентификацию, полностью разделяющую Umbraco и аутентификацию ASP.NET Forms. Он устанавливает куки-файл и использует его внутри, чтобы отслеживать вещи.Umbraco 7 пользовательских печенья

Все работает нормально по большей части, но если я зарегистрирован на моем сайте MVC с вышеупомянутым набором файлов cookie, я пытаюсь войти в раздел администратора Umbraco с использованием правильных учетных данных Umbraco, он аутентифицирует меня и перенаправляет меня на admin, но вызовы WebAPI начинают сбой. Первый - это вызов: /umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck, который возвращает ответ об ошибке HTTP 417 Missing token null.

Если я удалю свой файл cookie и обновить страницу, все будет работать нормально.

Я не понимаю, как мой cookie может помешать работе Umbraco. Он не использует аутентификацию ASP.NET Forms или что-то еще.

ответ

1

Моя первоначальная мысль заключается в том, что вы случайно использовали ключевое значение для вашего файла cookie, который зарезервирован Umbraco, что может привести к тому, что неправильный файл cookie будет прочитан, что вызовет проблемы. Решением этого будет просто переименование вашего файла cookie.

Если это не так, у меня есть другая теория:

HTTP запросы всегда будет включать в себя все куки, какой путь/домен совпадает с доменом ресурса вы запрашиваете. Они сортируются по длине пути в первую очередь, а во-вторых, по времени создания. Если бэкэнд Umbraco почему-то находит, что cookie, используемый для аутентификации по его номеру индекса (даже не удивился) в списке, а не ключевому значению, ваш пользовательский cookie приведет к сдвигу индекса, что заставляет Umbraco смотреть на неправильные cookie

Итак, если переименование файла cookie ничего не делало, забавной вещью попробовать было бы установить путь к файлу cookie до кратчайшего возможного пути, который заставит ваш браузер поместить файл cookie дальше по списку, поэтому индекс не сдвинется.

Это просто теория, хотя, так что я интересно услышать, как она идет :)

+1

Это кусок в вопросе -> https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web/Editors/UpdateCheckController.cs я не вижу никаких признаков того, что куки найдены номер индекса, извините :) – Sniffdk

+0

Я использую сеанс в backoffice. В момент установки сеанса добавляется дополнительный файл cookie, называемый ASP.NET_SessionId. Файл cookie начинается с буквы «A» и является первым в индексе. После этого я также получаю эти ошибки. –

+0

@Sniffdk Я на самом деле очень рад услышать это :) – Scherling

1

Эта ошибка происходит потому, что ваш запрос не пуская требуемого угловые заголовки CSRF + печенье. Я не уверен, почему это так, но кажется странным, если это ошибка вашего пользовательского cookie. Возможно, вы можете сообщить нам дополнительную информацию о вашей проблеме: имя/значение Cookie, шаги для воспроизведения, конкретную версию Umbraco, среду размещения и т. Д ....

Некоторая информация относительно того, что происходит, код, который возвращает эту ошибку здесь:

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

Это где печенье CSRF установлены:

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

и этот атрибут применяется к двум действиям, одному для входа и одному, когда мы извлекаем текущие пользовательские данные:

Это где заголовок установлен в 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

Надеюсь, данная информация выше, вы можете определить, где проблема.

Смежные вопросы