Как получить информацию о пользователе из файла cookie JWT в NextJS / ReactJS - PullRequest
0 голосов
/ 04 января 2019

Я узнал о Next.JS и React, и мне было интересно, можно ли получить информацию о пользователе из файла cookie, в котором хранится JWT.

Мне удалось установить JWT в качестве файла cookie, и я могу войти в негоуспешно, а также удалось расшифровать его, но не может найти ничего о том, как получить имя пользователя, идентификатор и т. д. из него.Вот что у меня есть:

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.Если я не понял это полностью неправильно и пропустил что-то действительно важное!Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 04 января 2019

Вы можете использовать эту функцию 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 и вернет объект

...