首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular2:触发当前路由守卫-处理注销操作

Angular2:触发当前路由守卫-处理注销操作
EN

Stack Overflow用户
提问于 2017-03-15 20:41:23
回答 1查看 1.1K关注 0票数 6

我使用JWT对用户进行身份验证。我的angular2应用程序中的部分路由受到CanActivate保护,如果用户未登录,该保护将重定向到登录页面。现在我正在实现注销按钮,并希望重定向到登录页面。仅当当前路由对未登录的用户不可见(例如,帐户页面)时,我才希望重定向。如果用户是,例如在主页上,我不想重定向到登录页面。

如果我能检查当前的路由是否有防护并触发这个防护,那就太好了。这样做是可能的吗?

守卫:

代码语言:javascript
运行
复制
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    if (this.loginService.getCurrentUserName()) {
        // logged in so return true
        return true;
    }
    // not logged in so redirect to login page with the return url
    this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});
    return false;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 22:51:42

对于所有需要路由保护的页面,您可以有一个特定的路由路径(如“/account/..”您可以查看路由守护页面是否已登录

代码语言:javascript
运行
复制
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    this.checkRouteNaviation(this.route.url);
}

public checkRouteNaviation(url) {
    if(url.includes('account') && !this.loginService.getCurrentUserName()) {
        // when url is of guard url and not logged in, redirect to login page with the return url
        this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});
        return false;
    }
    return true;
}

希望能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42810083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档