Я создаю сайт с использованием AngularJS и шаблона аутентификации токена WebApi2 (индивидуальные учетные записи пользователей). Я пытаюсь получить два сайта, чтобы войти в систему, в то же время, один на www.domain.com, а другой на sub.domain.comWeb Api 2 subdomain Аутентификация тока
В настоящее время я использую следующий код в угловом для аутентификации пользователя:
$http({
method: 'POST',
url: '/Token',
data: serializedData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function (data, status, headers, config) {
$window.sessionStorage.token = data.access_token;
});
и добавить заголовок авторизации для каждого запроса после:
app.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
$window.sessionStorage.loggedIn = true;
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
}
};
});
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
Вышеприведенный код позволяет каждому сайту входить в систему индивидуально, однако sessionstorage не сохраняется на других окнах/вкладках, поэтому он не будет входить в систему для входа в субдомен.
Есть некоторые комментарии в этом блоге относительно этого вопроса (на полпути вниз): http://blog.auth0.com/2014/01/07/angularjs-authentication-with-cookies-vs-token/
Однако это кажется слишком сложным для реализации (и иметь нежелательный эффект от пользователя перенаправляют). Я надеялся на что-то же просто, как установка домена, так же, как с печеньем:
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieDomain = ".domain.com"
});
я начинаю сомневаться в том, должен ли я использовать маркер аутентификации через куки в текущем сценарии ...
Я думал, что хранить токен в печенье было большим, нет? – kiwijus