重定向loggedout用户以angular2登录

重定向loggedout用户以angular2登录,angular,redirect,Angular,Redirect,当用户注销某个url时,我想将其重定向到登录页面,该url只能由登录用户访问。我必须为我的整个网站这样做。我在stackoverflow上找到了一些答案,但是我很困惑,如果我必须在代码中实现重定向,这样整个网站才能重定向到登录页面。我正在使用angular2。我是打字新手。你能引导我到一些页面或链接,在那里我可以看到我必须写代码重定向为一个单页应用程序。请提供帮助。在注销事件完成后,是否只需路由器链接到登录路由 import { Router } from '@angular/route

当用户注销某个url时,我想将其重定向到登录页面,该url只能由登录用户访问。我必须为我的整个网站这样做。我在stackoverflow上找到了一些答案,但是我很困惑,如果我必须在代码中实现重定向,这样整个网站才能重定向到登录页面。我正在使用angular2。我是打字新手。你能引导我到一些页面或链接,在那里我可以看到我必须写代码重定向为一个单页应用程序。请提供帮助。

在注销事件完成后,是否只需路由器链接到登录路由

    import { Router } from '@angular/route';

    constructor(private router: Router) {}

    onLogout() {
        //some logout logics
        this.router.navigate(['/login']);
    }
如果您将路由路径设置为登录为

   {path: 'login', Component: LoginComponent }

您需要为此实现AuthGuard,并在路由中使用canActive

import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor(private auth: AuthService, private router: Router) {
  }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (loggedIn) { // however you want to check if user is loggedin or not
      return true;
    }

    this.router.navigate(['/login'], {queryParams: {'back': state.url}});
    return false;
  }

}
然后在路线上使用

  {
    path: '',
    component: HomeComponent,
    canActivate: [AuthGuardService]
  }

我投票以离题的方式结束这个问题,因为要求我们推荐或查找书籍、工具、软件库、教程或其他离题资源的问题因堆栈溢出而离题,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,到目前为止已经做了些什么来解决它。嘿,如果人们不能在这里向我解释,我要求提供一个链接或教程。有时人们也会给出github链接、博客链接或stackoverflow答案。如果我是一个登录用户,并且我与朋友共享了一个链接,请检查情况。当朋友尝试访问该链接时,该链接不会打开,因为他尚未登录,并且该网页需要登录。然后在这个场景中,我必须通过检查localstorage将用户重定向到登录页面,看他是否登录。我理解这个概念,我不知道如何一次在整个网站上应用它,或者我需要在所有组件中逐个应用它。另外,我对typescript还不熟悉。但为什么有人能够访问一个为登录用户准备的页面而他们没有登录?这是一个验证页面,用户通过上传他的身份证明和其他详细信息来验证自己。在用户下订单验证自己后,我们将向他发送一个验证链接。对于此链接,用户必须登录。因此,如果用户尚未登录,我必须将其重定向到登录屏幕。当我的一个朋友与我共享帖子链接但帖子无法直接打开时,facebook也会出现这种情况。fb会首先将我带到登录页面,然后导航到帖子。