我正在学习Next.JS和React,想知道是否有可能从存储JWT的cookie中获取用户详细信息。
我设法将JWT设置为cookie,可以成功记录它,也设法对其进行解码,但是找不到有关如何从中获取用户名,id等的任何信息。这是我到目前为止的内容:
import React from "react";
import App from "../components/App.js";
import cookie from "react-cookies";
import jwt_decode from "jwt-decode";
export default class Dashboard extends React.Component {
static async getInitialProps() {
const token = cookie.load("jwt");
return { token };
}
constructor(props) {
super(props);
this.state = props.token;
}
render() {
const current_user = jwt_decode(this.props.token, { header: true });
return (
<App>
<p>Username: {current_user.username}</p>
</App>
);
}
}
理想情况下,我希望能够将cookie值设置为用户变量并从中提取属性,例如current_user.username。除非我完全错了并且错过了一些非常重要的东西!任何帮助将不胜感激!
答案 0 :(得分:1)
您可以使用此parseJwt
函数来提取用户数据:
function parseJwt(token) {
if (!token) { return; }
const base64Url = token.split('.')[1];
const base64 = base64Url.replace('-', '+').replace('_', '/');
return JSON.parse(window.atob(base64));
}
console.log(parseJwt('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'))
它将提取jwt令牌内的数据并返回一个对象