如何解决登录后,Angular Authgaurd不会将应用程序重定向或强制到首页
路由模块
{
path:'login',component:LoginComponent
},{
path: '',component: DefaultComponent,canActivate:[AuthGuard],children: [{
path: '',component: DashboardComponent
},
登录component.ts
let hey=data["API Key"]
let id=data["id"]
console.log(id);
console.log(hey);
localStorage.setItem("key",hey),this.router.navigateByUrl('/');
// window.location.reload(true)
Authgaurd.ts
canActivate():boolean{
if (this._authsevice.loggedIN()){
return true
}
else{
this._router.navigate(['/login'])
return false
}
}
Authservice.ts
export class AuthService{
loggedIN(){
return !!localStorage.getItem('key')
}
}
一经身份验证,它就会创建一个密钥并将其存储
但我不明白为什么该页面仍处于登录页面而没有重定向或导航并强制authservice搜索密钥
当我强制重新加载页面时
我仍然获得登录页面,并且通过第二次身份验证,我可以访问所有其他页面
我不明白为什么 以及如何在存储密钥后强制角度应用程序查看
解决方法
您可以返回网址树,您应该这样做:
canActivate(): boolean | UrlTree {
if (this._authsevice.loggedIN()){
return true
}
return this._router.navigate(['/login'])
}
回答您的问题:
使用Observable
作为BehaviourSubject
的登录状态,您将Observable<boolean | UrlTre>
用作canActivate
中的返回值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。