Ответ 1
вы принимали REST api и файлы cookie и сеансы. Cookies и сеансы не идут с философией REST. Вот почему.
Позвольте мне рассказать вам, как мы справляемся с этой проблемой в нашем проекте. Основной способ узнать, какой пользователь запрашивает и имеет ли он права доступа, - это значение заголовка "Авторизация". Вы можете использовать Basic Authentication, Barer или любой другой.
Обычно мы предпочитаем систему авторизации на основе токенов. Когда логин успешно завершен, сервер отправляет токен. В ионном приложении мы сохраняем его с помощью factory
, называемого SessionService
. Поэтому всякий раз, когда пользователь входит в систему, маркер хранится и используется для каждого запроса. Но токен будет потерян, если пользователь закроет приложение. Поэтому мы можем хранить его в локальном хранилище. Затем пользователь может быть перенаправлен на панель управления до тех пор, пока пользователь не выйдет из системы.
app.factory("SessionService", function($window){
var user={};
if ($window.localStorage['user']!=undefined){
user=JSON.parse($window.localStorage['user']);
console.log(user);
}
return{
isLoggedIn:function(){
return !isEmpty(user);
},
logout:function(){
console.log("logout")
user={};
$window.localStorage.clear();
},
setUser:function(data){
user=data;
$window.localStorage['user']= JSON.stringify(user);
},
getUser:function(){
return user;
}
}
})
Теперь в каждом веб-запросе вы можете вызвать SessionService.getUser().token
при настройке заголовка Authorization
.
UPDATE:
Несмотря на то, что использование файлов cookie не рекомендуется, вы можете легко использовать его в своем приложении.
Если вы отправляете запрос с CORS, angular не отправляет файлы cookie с запросом.
Один из способов решить эту проблему - отправить withCredentials: true
с каждым запросом:
$http({withCredentials: true, ...}).get(...)
Подробнее об этом .
Надеюсь, это поможет!