2016-03-22 10 views
7

Это может быть простой вопрос, я надеюсь, что это по крайней мере.Cookies и ASP.NET Core

Я начал изучать кандидат на выпуск ядра ASP.NET, и я вижу, что большая часть конфигурации была перенесена из старого файла web.config и в структурированные файлы JSON (а также XML и любое другое промежуточное ПО, которое вы, возможно, захотите написать сами).
Единственное, что я еще не понял, как это сделать, это то, что было так просто в старом подходе web.config, обеспечив некоторые основные компоненты вашего сайта, такие как файлы cookie.

Раньше мы устанавливали secure, httpOnly и т. Д. Внутри web.config, и когда дело дошло до развертывания, красивый маленький файл преобразования изменит значения для нас и выплюнет новый файл в конце. После небольшого чтения, похоже, что web.config сейчас почти мертв, так как же мы можем добиться тех же результатов?

Я знаю, что мы можем загружать различные файлы конфигурации на основе того, установлены ли определенные переменные, такие как среда, DEV, STAGING, PRODUCTION и т. Д., Но это, похоже, просто заменяет трансформации чем-то, что является преобразованием для всех целей и цели, за исключением того, как он действительно загружен?

Неужели я что-то пропустил или мне удалось сработать в какой-то беспорядок?

+0

aspnet.core сам не читает web.config вообще. Он используется только в том случае, если вы используете IIS для пересылки запросов в приложение AspNet Core, и в этом случае IIS работает только как обратный прокси. – Pawel

+0

Вы просмотрели [docs] (http://docs.asp.net/en/latest/security/authentication/cookie.html) для файлов cookie в Asp.Net Core? Я не совсем уверен, что спрашивает ваш второй в последнем абзаце. Вам интересно, как делать преобразования в дополнение к файлам cookie? –

+0

@ Извините, я постараюсь быть немного понятнее, я знаю, что вы можете включить аутентификацию на основе файлов cookie, и внутри там вы можете определить такие параметры, как 'httpOnly', но мой вопрос касается файлов cookie вообще, поскольку я не использую их для аутентификации но все же хотите убедиться, что их правильно обрабатывают/правильно. –

ответ

11

Для общего печенья вручную, созданное в приложении, вы контролируете флаги для безопасности при его создании - например:

Response.Cookies.Append(
    "COOKIE_NAME", 
    "COOKIE_VALUE", 
    new CookieOptions() 
    { 
     Path = "/", 
     HttpOnly = false, 
     Secure = false 
    } 
); 

Здесь установке HttpOnly истины предотвратили бы на сторону клиента JS доступа к кукам vlaue и установка Secure в true, только разрешить куки-файл обрабатывать/принимать по HTTPS.

При добавлении файлов cookie к отклику не применяются значения по умолчанию, как показано в the source code for the ResponseCookies class.

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

+0

Итак, я правильно понимаю, что, по крайней мере, из того, что я собрал до сих пор, нет возможности глобально контролировать такие параметры, как «httpOnly» и «secure» на куки, сгенерированные в веб-приложении? Это кажется немного контр-интуитивным –

+0

Я не верю, что есть - просматривание [официальных документов] (http://docs.asp.net/) и [исходный код для класса ResponseCookies] (https: // github.com/aspnet/HttpAbstractions/blob/master/src/Microsoft.AspNet.Http/ResponseCookies.cs), который обрабатывает файлы cookie, добавляемые в ответ, я не вижу ничего, что использовало бы значение по умолчанию при создании файла cookie. –

+0

@Jak Я обновил свой ответ, чтобы отразить, что не применяются значения по умолчанию –

0

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

+2

Я не верю, что это правильно - это будет контролировать файлы cookie, используемые только для состояния сеанса, а не для всех файлов cookie в целом. Я отправлю ответ с моим пониманием того, как он работает. –

+0

Я удваиваю это, ссылка на документы закрывает только файлы cookie состояния сеанса. Я все еще борюсь с настройкой файлов cookie в ядре asp.net ... вздыхаю для простоты php порой ... setcookie() ... желая его в asp.net core – John

+0

Это не ответ, это обновление статуса. Отправьте шаги. –