最近,我正在尝试使用管理面板构建一个JWT身份验证系统来管理登录用户,以实现简单用途,例如在移动设备或网络中使用的RESTFUL API或实时数据库(Socket.io)。但是问题很少我绊倒了。 现在的状态是我能够使用nodejs创建一个JWT令牌并将其传递到前端。 然而,之后我不知道如何处理前端的令牌。以下是问题
抱歉我的英语不好,我会尽力以正确的方式说出来。
这是我的github回购问题 https://github.com/xylops/backend
感谢您抽出时间阅读本文
答案 0 :(得分:4)
存储令牌:
使用localStorage
存储令牌,即使是用户也是如此
刷新令牌仍然存在的页面。,您可以添加您的
令牌到axios header
所以它会为你发出的每一个请求传递。
退出用户
获取令牌后
执行您要执行的操作,令牌将包含您提供的信息,例如您选择的用户ID,名称和其他详细信息。基于此,您可以在前端显示不同的数据,并在后端查找用户特定的记录。
你没有遗漏任何东西,在基于令牌的身份验证中退出并不容易实现,基于令牌的身份验证的优点是你的应用程序不依赖于cookie,会话和你可以真正做出无状态分布式应用程序。
代码示例
这是我使用 localStorage 和 Axios
的令牌的方式import axios from 'axios';
const setToken = (token) => {
// if token is provided, save it in localStorage and add it to axios header as well.
if ( token ) {
localStorage.token = token
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
}
// if token is empty, just remove it from localStorage and axios..
// set empty token when you logout the user.
else {
delete localStorage.token;
delete axios.defaults.headers.common['Authorization'];
}
}
当应用程序加载第一次和每次刷新时
if ( localStorage.token ) {
setToken( localStorage.token );
}
要解码您可以使用的令牌,JWT
import jwt from 'jsonwebtoken';
const decodedToken = jwt.decode(localStorage.token);
希望这有点帮助。