【问题标题】:Prevent user from going back to certain routes using route guards Angular使用路由保护 Angular 防止用户返回某些路由
【发布时间】:2019-09-19 12:09:53
【问题描述】:

我想知道是否有办法阻止用户返回某些路线

现在基本上我的问题是,用户将登录并通过 login/callback 路由,该路由对用户进行身份验证并决定他们从那里去哪里,现在如果用户按下浏览器并返回该路由,他们就会卡住那里 我有更多示例,但这是最容易理解的

所以我基本上想在这些路线上放置一个 routeGuard,如果用户按下返回它们到当前路线,它会说明一些事情

现在我知道我可以使用 canActivate() 并进行类似的设置

export class PreventBackGuard implements CanActivate {

  constructor(public activatedRoute: ActivatedRoute, public router: Router)

  canActivate(): boolean {
    // do something here
    console.log(this.activatedRoute);
  }
}

所以我知道我可以通过activatedRoute 获得当前路线(我要去的路线),但我似乎无法获得我之前的路线,我不确定我会怎么做知道用户何时通过后退按钮导航到该路线.. 有人有什么想法吗??

【问题讨论】:

    标签: angular


    【解决方案1】:

    如果您将 auth gaurd 添加到您的根目录并且它在 canActivate 方法中返回 false 那么它不会让用户转到下一个根目录,因此用户将留在同一页面上,以便在您的登录页面的情况下,为什么您需要获取上一个根目录例如,您的 canActivate 方法应如下所示

    canActivate(): boolean {
         if(userLoggedIn){
             return false;
          }
        return true
      }
    

    这样,如果用户已经登录,它将不允许他们访问登录页面并强制他们留在同一页面上

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 2023-04-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2021-08-28
      相关资源
      最近更新 更多