2015-09-22 2 views
0

Итак, последние несколько месяцев я разрабатывал «функции входа в систему» ​​своих приложений с угловыми установками. Пользователь входит в систему, и если учетные данные верны, REST API возвращает токен. Я беру этот маркер и сохранить его как печенье:авторизация и контроль входа в приложение Angular

$cookies.put('authorisation', data['token']); 

Всякий раз, когда я называю обслуживание $ HTTP, я отправить куки авторизации в качестве заголовка, и он разрешает запрос HTTP. Затем на контроллер каждого вида добавляю:

if (!$cookies.get('authorisation')) { 
    $location.path('/login'); 
} 

Так что, если куки не существует, пользователь автоматически пнул на экран входа в систему.

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

ответ

0

Вы знакомы с Угловым $ HTTP перехватчиками:

https://docs.angularjs.org/api/ng/service/ $ HTTP # перехватчиков

Вы можете использовать запрос перехватчик, чтобы ваше разрешение проверяется перед каждым запросом $ HTTP.

Если вы это сделаете, вы также должны интегрировать пользовательский флаг в каждый объект конфигурации $ http (например, skipAuthorization), чтобы позволить пользователю выполнять Запросы без входа в систему (полезно для фактического входа в систему ;-))


@AzzyDude на ваш комментарий: Я использую UI-маршрутизатор, чтобы сделать навигацию внутри моей углового 1.6.x заявки. Вы можете интегрировать собственные конфигурационные-свойства на состояниях (isGuestState) или если его закрытое приложение, например, как у меня, жестко закодированы в случае $ StateChange, как это: enter image description here

+0

Хорошо, да, я слышал перехватчиков раньше. Я могу изучить это дальше. Но как точно следует ограничивать доступ к страницам, когда пользователь не вошел в систему? Должно ли это быть, если $ http терпит неудачу, вернется к логину? – AzzyDude

+1

Привет @AzzyDude, если он все еще интересен, я добавил свой $ StateChangeStart EventHandler в ответ –

+0

Большое спасибо за то, что вернулись ко мне, даже через 2 года! :) – AzzyDude