如果用户未登录,如何重定向到登录页面?

用户名

我已经实现了登录前和登录后的保护措施,以使某些用户无法访问所有页面。我的问题是,当用户未登录时&尝试输入未经授权的页面(例如“ localhost:4200 / restricted_pa​​ge”)时,应将其重定向到登录页面“ localhost:4200 / login”。但是我无法重定向到登录页面。现在,它仅重定向到localhost:4200。

我应该在哪里修复代码?

登录前保护

export class BeforeLoginGuard implements CanActivate {
    canActivate(
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {

        return !this._tokenService.loggedIn();

    }

    constructor(private _tokenService: TokenService) { }
}

登录后卫

export class AfterLoginGuard implements CanActivate {

    constructor(private _tokenService: TokenService) { }

    canActivate(
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {

        return this._tokenService.loggedIn();
    }
}

令牌服务

export class TokenService {
    payload(token) {
        const payload = token.split('.')[1];
        //decoding 
        if (typeof (payload) !== 'undefined')
            return JSON.parse(atob(payload));
        return false;
    }

    loggedIn() {
        // return this.isValid();
        const token = this.getToken();
        console.log("token", token);
        if (token) {
            const payload = this.payload(token);
            if (payload) {
                return Object.values(this.iss).indexOf(payload.iss) > -1 ? true : false;
            }
        }
        return false;
    }
}
维许·帕特尔(Vishw Patel)

我相信localhost:4200/restricted_page-此路线将具有AfterLoginGuard

所以在那个部分

   canActivate( next: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
       let flag = this._tokenService.loggedIn();
       if(flag ){
          return flag ;
       } else {
          // Navigate to login component. You will have to add router to constructor 
             and then this.router.navigate(['/login']);
          return;
       }
       return flag;
    }

理想情况下,我认为应该只有一个具有不同条件的Auth gaurd。但是无论如何,您已经开发了上面的2将为您工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果已经在php mysql中登录用户,如何将用户重定向到配置文件页面

如果用户未登录Laravel,则重定向到Login

如果用户未登录,则重定向到登录页面

如果用户未登录,则重定向至登录-Ionic

vuejs-如果已经登录,则从登录/注册重定向到主页,如果未登录,则从其他页面重定向到登录

如果用户不登录就直接进入主页,则重定向到登录页面

用户未登录应用程序时如何重定向到登录页面

如果未登录,如何重定向wordpress用户

如果用户在django中注册后首次登录,如何将用户重定向到其他页面?

如果AJAX网址重定向到登录页面,则重定向到登录页面

如果principal为null,如何重定向到登录页面

如果用户未登录,则将他们重定向到登录页面

如果用户未经授权,Spring Security如何重定向到“登录”页面

如果用户未登录,则ZF2重定向到每个页面上的登录页面

将用户重定向到登录页面

Joomla登录页面(如果已经登录用户)重定向到主页

如果用户未登录,则重定向到索引

将用户重定向到主页或禁用登录按钮(如果未登录)

如果用户未登录 wordpress,则重定向到登录页面?

ActiveAdmin Gem:如果未登录,则将用户重定向到登录页面

如果未登录,将用户重定向到另一个页面?

如何重定向到jsp登录页面,如果用户还没有登录,Java servlet?

如果用户未登录(Swift),则将用户从 TabBar 重定向到登录 viewController

如果用户尚未登录,则将 MVC URL 重定向到登录页面

我需要验证用户名和密码才能进入仪表板,如果用户未登录,还需要重定向到登录页面

如果未登录,用户将被重定向到“我的帐户”页面。如果已登录,仍会重定向。缓存重定向?

如何重定向到登录页面?

未定义路由登录,如果管理员用户当前未登录,我在尝试将页面重定向到登录时不断收到此错误

如何将登录 url 重定向到登录用户到新闻提要页面