我在身份验证后在localStorage中存储令牌,但我需要删除它并在每次刷新时重定向到某个路由器。
我没有想法如何以角度来做。我使用普通的js使用非常hacky方式。
window.addEventListener('load', function (e) {
if (window.sessionStorage !== null && (window.location.href.indexOf('/signin') === -1 && window.location.href.indexOf('confirm-user') === -1)) {
window.sessionStorage.clear();
window.location.href = '/signin';
}
});
我正在考虑添加一个身份验证保护程序,但我确信应该采用更有棱角的方式来执行此操作。
答案 0 :(得分:0)
我建议创建一些auth服务来将您的令牌存储为普通变量和Guard,以防止重定向到没有令牌的安全页面。您可以在一个服务中实现它:
@Injectable()
export class AuthService implements CanActivate, CanActivateChild {
token:String;
canActivateChild = this.canActivate;
constructor(private router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (!this.token) {
this.router.navigate(['/signin']);
return false;
}
return true;
}
}
export const ROUTES: Routes = [{
path: 'signup',
component: SignupComponent
}, {
path: 'securedpath',
component: SecuredComponent,
canActivateChild: [AuthService],
canActivate: [AuthService]
}]
但是这项服务应该是单身人士。记在心上。在app.module的提供者列表中声明它(如果使用Jonh Papa的样式指南,则在core.module中声明)