ASP.NET MVC - перекрестная аутентификация/членство в домене

Ударьте блокпост при реализации переключателя языков на основе субдоменов (ru.domain.com загружает английский, jp.domain.com загружает японский язык).

Как получить единую систему членства для работы в нескольких поддоменах (ASP.NET MVC С#)?

Увидите что-нибудь о добавлении записи domain="domain.com" в <forms > в web.config. Это, но работает ли это при тестировании на локальном веб-сервере разработки веб-студии?

Ответ 1

Попробуйте сами создать файл cookie.

В AccountController вы найдете следующее:

FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

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

var a = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie);
//if you're debugging right here, a.Domain should be en.example.com; change it
a.Domain = "example.com";
HttpContext.Current.Response.Cookies.Add(a);

Джеймс

Ответ 2

Вы должны использовать префикс точки, как это.

<authentication mode="Forms">
    <forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>

Ответ 3

Ваша проблема заключается в том, как браузеры отправляют cookie во время запроса.

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

Браузер делает различие между файлами cookie, установленными с en.domain.com и jp.domain.com. Они не позволяют куки файлы из одного домена переходить к другому, потому что они не находятся в родительском домене.

Решение вашей проблемы будет заключаться в том, чтобы взять на себя управление созданием файлов cookie. Я не очень много играл с ASP.NET MVC, но я уверен, что это можно сделать не через HTML, а через свойство или что-то еще. Это очень распространенный сценарий. Вы должны установить домен cookies для домена "domain.com" для своих производственных полей, это правильно. Если вы работаете в локальном поле, вы должны установить для домена cookie значение "".