[英]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/callback-url-begins-with-hash/3694
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.