Angular 2:登录后如何将用户重定向到以前的URL

时间:2018-05-08 07:23:29

标签: angular redirect aspnetboilerplate

我正在使用ABP Angular模板。我正在寻找一种方法将用户重定向到他在身份验证发生后最初请求的URL。例如,如果用户将localhost:4200 / app / plan / 1仅允许经过身份验证的用户,则框架会将用户重定向到登录页面,当用户自动进行身份验证时,会重定向到之前请求的地址。用户被重定向到主组件

为什么initialUrl中的login.service.ts总是' localhost:4200'?

var initialUrl = UrlHelper.initialUrl;
    if (initialUrl.indexOf('/login') > 0) {
        initialUrl = AppConsts.appBaseUrl;
    }
    location.href = initialUrl;

2 个答案:

答案 0 :(得分:0)

试试此代码

{{1}}

答案 1 :(得分:0)

适用于ANGULAR 7 +

实际上,从Angular 7.2开始,不需要使用服务来保存先前的url。您可以使用状态对象设置最后的URL,然后再链接到登录页面。这是一个登录方案的示例。

@Component({ ... })
class SomePageComponent {
  constructor(private router: Router) {}

  checkLogin() {
    if (!this.auth.loggedIn()) {
      this.router.navigate(['login'], { state: { redirect: this.router.url } });
    }
  }
}
@Component({...})
class LoginComponent {
  constructor(private router: Router) {}

  backToPreviousPage() {
    const { redirect } = window.history.state;

    this.router.navigateByUrl(redirect || '/homepage');
  }
}
----------------

此外,您还可以在模板中传递数据:

@Component({
  template: '<a routerLink="/some-route" [state]="{ redirect: router.url }">Go to some route</a>'
})
class SomePageComponent {
  constructor(public router: Router) {}
}