我将 nebular
和 laravel
API 与 NbPasswordAuthStrategy
和 NbAuthJWTToken
类一起使用,如下所示:
NbAuthModule.forRoot({
strategies: [
NbPasswordAuthStrategy.setup({
name: 'email',
token: {
class: NbAuthJWTToken,
key: 'data.user.token',
},
baseEndpoint: BASE_URL + 'users/',
login: {
endpoint: 'login',
method: 'post',
redirect: {
success: '/pages/dashboard',
failure: null, // stay on the same page
},
},
}),
],
forms: {
login: {
rememberMe: false,
},
validation: {
password: {
minLength: 6,
},
},
},
}),
登录
端点响应如下:
{
"data": {
"user": {
"id": 114683,
"first_name": "mhd",
"last_name": "sultan",
...
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNTcyMzQ2NDMzLCJleHAiOjE2NjY5NTQ0MzMsIm5iZiI6MTU3MjM0NjQzMywianRpIjoiNmxGaDNwbWd0RVpoa0FPRSIsInN1YiI6MTE0NjgzLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.Eg4_1cXngafs1V80jqygvJDR0vZN5HuHyXV9PTeUkzA",
}
}}
当我订阅onTokenChange时,在我的UserService
中:
constructor(private authService: NbAuthService) {
this.authService.onTokenChange()
.subscribe((token: NbAuthJWTToken) => {
console.log(token);
console.log(token.getPayload());
if (token.isValid()) {
this.user = token.getPayload(); // receive payload from token and assign it to our `user` variable
}
});}
我正确获取 token ,但我获取包含 JWT token 属性的有效负载
我应该怎么做才能获取data.user
对象?
最佳答案
您想要从有效负载返回的所有数据都应该在您创建 jwt token 时进行编码:
jwt.sign({
payload,
SECRET,
expiration,
});
然后可以通过 token.getPayload()
关于angular - Nebular - 登录后未正确获取 token 有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606680/