Внутри вашего CanActivate
охранника маршрута вы можете возвращать либо Promise<boolean>
, либо Observable<boolean>
, либо boolean
.
Но внутри того же самого защитного файла вы также можете полагаться на сервис, который возвращает вам true
или false
в зависимости от того, истек ли токен или нет. И это, в свою очередь, то, что вы, возможно, возвращаете из своей гвардии.
Предположим, что AuthService проверяет, не истек ли токен аутентификации. А Служба данных получает данные для вас.
Теперь, прежде чем обновлять эти данные, вы можете снова проверить их, внедрив этот AuthService в свой DataService в качестве зависимости, а затем проверив, истек ли токен.
В качестве альтернативы , ваш API может проверить, был ли этот запрос аутентифицирован или нет. Для этого вам потребуется отправлять заголовок авторизации с каждым запросом. В таком случае вы можете использовать HttpInterceptor
. Этот перехватчик будет перехватывать каждый исходящий запрос, чтобы проверить, присутствует ли на нем заголовок Authorization
. Если он присутствует, только тогда он разрешит выполнение запроса. Если нет, вы можете сделать все необходимое, переместив пользователя обратно на страницу входа.