angular - 无法以角度 6 获取当前网址
问题描述
我试图在 auth.gurd 中获取角度 6 中的当前 url(url 不是参数。)这样做的目的是根据角色保护用户可访问性。
console.log(this.router.url);
我只是在canActivate()
auth.gurd 的功能中执行此操作。这里的问题是。我得到一个旧网址。前任。我/admin/dashboard
现在然后它会打印/
,如果我点击/admin/orders
它就会打印/admin/dashboard
。
我尝试了所有其他方式,例如快照和其他解决方案。
constructor(
private api: ApiHttpService,
private router: Router,
private route: ActivatedRoute) { }
canActivate(): boolean {
console.log(this.router.url);
if (this.api.loggedIn()) {
return true;
} else {
this.router.navigate([''])
return false
}
}
解决方案
您可以在 authguard 中使用它来获取请求 url:
@Injectable()
export class HasPermissionService implements CanActivate {
private permissions = [];
constructor(private _core: CoreService) {
this.permissions = this._core.getPermission();
}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean {
//check here
}
}
在 canActivate() 中传递 ActivatedRouteSnapshot 和 RouterStateSnapshot 作为参数,它将为您提供请求 url。
您可以在这里获得更多信息:CanActivate
推荐阅读
- http - 如何正确使用http.request
- android - 在 Kotlin 中查找所有出现的对象实例化
- python - Keras 模型中的采样 Softmax
- java - 遍历标签图并处理它们
- c - 使用 popen() 将密码短语传递给 Veracrypt - 它安全吗?
- ios - 为什么不执行 segue
- mysql - 即使我可以从终端登录,用户“root”的访问被拒绝,凭据在 .env 中是正确的
- javascript - 移动一个盒子穿过正方形的角,然后以蛇形移动它
- python - 使用 user_passes_test 限制访问按组或登录用户查看
- javascript - 在 Vue JS 组件中使用同步的两种方式 prop 数据绑定