Резюме
В моем случае я хотел, чтобы дать доступ моего пользователя к Охраняемым маршрутам путем проверки проверки лексемы я сохранить в локальное хранилище. Поэтому, если я их выхожу, я удаляю токен вместе с любыми данными, которые у меня есть в локальном хранилище. Вы можете использовать эту функцию в каждом маршруте.
public logout() {
localStorage.removeItem('profile');
localStorage.removeItem('access_token');
this.userProfile = undefined;
this.router.navigateByUrl('/home');
};
Я создаю службу для аутентификации. Вы можете создать две разные службы или две разные функции. На самом деле у вас много вариантов. Вот один из вариантов.
Решение
Для выхода из системы и перенаправлять
public logout() {
localStorage.removeItem('profile');
localStorage.removeItem('access_token');
this.userProfile = undefined;
this.router.navigateByUrl('/home');
};
Вы можете использовать эту функцию в каждом из компонентов. Или страницы. В основном перенаправлять маршрут, если пользователь находится на странице профиля. но если пользователь не находится на странице или маршрут, который должен быть перенаправлен затем удалить
this.router.navigateByUrl('/home');
Из функции, так что пользователь не перенаправляется.
Таким образом, вы могли бы иметь две услуги
public.service.ts
@Injectable()
export class Public {
public logout() {
localStorage.removeItem('profile');
localStorage.removeItem('access_token');
this.userProfile = undefined;
};
Затем на ваших страницах, которые вы хотите зарегистрировать пользователя из но оставить их на том же использовании страницы эту услугу
export class SomeComponent {
constructor(private router: Router, private public: Public ) { }
}
Так что, когда использование функция выхода, которую он не будет перенаправлять.
Тогда для перенаправления, когда пользователь выходит из системы добавить эту услугу, как это,
secure.service.ts
@Injectable()
export class Secure {
public logout() {
localStorage.removeItem('profile');
localStorage.removeItem('access_token');
this.userProfile = undefined;
this.router.navigateByUrl('/home');
};
И, конечно, любой компонент, который включает услугу слишком вы звоните в вашем html
, как это правильно logout function
,
<a class="myClass" href="#"(click)="public.logout()">Logout</a>
или
<a class="myClass" href="#" (click)="secure.logout()">Logout</a>
Привет wuno, спасибо за ваш ответ. –
Нет проблем. Это имело смысл? и помочь? – wuno
На самом деле я придумал что-то похожее, но хотел, чтобы избежать ввода логики в каждом компоненте, что может быть немного громоздким, если у вас много. Я думаю, нет другой альтернативы:/ –