Предположительно, аутентификация с бэкэнд требует наличия определенного токена. То есть вы не просто устанавливаете флаг и называете его аутентификацией, но чтобы иметь возможность связываться с бэкэнд, вам необходимо указать имя пользователя/пароль/cookie/токен в запросе или запрос будет отклонен.
Контроллер - это плохое место для хранения такой вещи, поскольку контроллеры не являются постоянными. Или, по крайней мере, вы не должны делать их постоянными, насколько это возможно. Кроме того, хранение токена в контроллере не позволяет ему ничего другого.
- Вне зависимости от того, зарегистрирован ли вы или нет, следует ли использовать токен аутентификации или нет.
- Этот токен должен храниться в каноническом месте, наиболее подходящим для этого является услуга.
- Другие сервисы получают оттуда токен, а также определяют, действительно ли приложение «вошло в систему» на основе доступности токена.
Грубый набросок того, как это должно быть структурировано:
app.service('AuthService', function() {
this.token = null;
});
app.service('FooService', function (AuthService, $http) {
$http.get(..., AuthService.token, ...)
});
app.controller('LoginStatusController', function (AuthService) {
Object.defineProperty(this, 'isLoggedIn', {
get: function() { return AuthService.token != null; }
});
});
<div ng-controller="LoginStatusController as ctrl">
<div ng-hide="ctrl.isLoggedIn">
Когда вы на самом деле войти и получить маркер, вы установите AuthService.token
и он будет доступен для всех других услуг и контроллеры. Если и когда токен становится недействительным или не установлен, все службы и контроллеры теряют свой аутентифицированный статус.
Он использует аутентификацию печений. –
И в сценарии jwt auth факт, что «у меня есть токен», не означает, что вы аутентифицированы. Аутентификация является гораздо более похожей на «мой токен действителен», который необходимо проверять часто. –
Если токен неявный, ну, тогда замените его только флагом 'true' /' false'. И да, вы не узнаете, действителен ли ваш токен или нет, пока вы его не попробуете. Поэтому, когда он терпит неудачу, аннулируйте его. – deceze