繁体   English   中英

在Auth0Lock对象中使用选项时未存储Angular2 Auth0令牌

[英]Angular2 Auth0 Token Not Being Stored When Using Options In Auth0Lock Object

我正在使用Auth0对我的NG2应用程序中的用户进行身份验证。 我将AuthGuard设置为阻止用户在没有令牌的情况下访问应用程序中的某些页面。

当我使用不带任何选项的Lock小部件时,令牌将毫无问题地保存到localStorage 但是,如果使用这些选项,则不会保存到localStorage

更具体地说,我可以使用一些选项,但是当我添加auth:及其参数时,令牌将不会保存到localStorage

这是导致问题的部分:

auth: { responseType: 'token', redirect: true, redirectUrl: "http://localhost/dashboard" },

将其添加到选项时,不会将令牌保存到localStorage

文件auth.service.ts

import { Injectable }                      from '@angular/core';
import { tokenNotExpired, JwtHelper }      from 'angular2-jwt';
import { Router }                          from '@angular/router';
import { myConfig }                        from './auth.config';

declare var Auth0Lock: any;

var options = {
  theme: { logo: '../assets/img/logo.png', primaryColor: '#779476' },
  auth: { responseType: 'token', redirect: true, redirectUrl: "http://localhost/dashboard" },
  languageDictionary: { emailInputPlaceholder: "eve@example.com", title: "Login" }, 
};

@Injectable()
export class Auth {
  lock = new Auth0Lock(myConfig.clientID, myConfig.domain, options, {});

  constructor( private router: Router ) {
    this.lock.on('authenticated', (authResult) => {
      localStorage.setItem('id_token', authResult.idToken);
    });
  }

  public login() { this.lock.show(); };
  public logout() { localStorage.removeItem('id_token'); };
  public authenticated() { return tokenNotExpired(); };
}

文件guard.service.ts

import { Injectable }           from '@angular/core';
import {
    CanActivate,
    Router,
    ActivatedRouteSnapshot,
    RouterStateSnapshot
}                               from '@angular/router';
import { Auth }                 from './auth.service';
import { Observable }           from 'rxjs/Observable';

@Injectable()
export class Guard implements CanActivate {

    constructor(protected router: Router, protected auth: Auth ) {}

     canActivate() {
        if (localStorage.getItem('id_token')) {
            // logged in so return true
            return true;
        }
        // not logged in so redirect to login page
        this.router.navigate(['/pages/home']);
        return false;
    }
}

尝试在您的this.lock设置中更改此设置。

auth: {
    redirect:false,
  }

资源:

  • auth0.com/forum/t/authenticated-event-not-triggering/3554
  • github.com/auth0/lock/issues/527

如果您仍想坚持使用重定向功能,则可以尝试自行获得这些功能。 详情请参阅此处:auth0.com/forum/t/callback-url-begins-with-hash/3694

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM