【发布时间】:2021-10-02 09:59:04
【问题描述】:
这更有可能是概念问题。我正在做网站的前端,并且已经从另一个人那里创建了后端。他的端点之一是“登录端点”,它向我发送了几条回复:
- 令牌 (JWT)
- 用户ID
- 姓名
- 地址
- 公司
(和其他一些人)
我在登录后直接收到所有这些作为响应。所以我想知道哪种方法是拯救它们的最佳方法?我们可以假设将除 Token 之外的所有内容保存在 localStorage 或带有 js-cookies 包的 cookie 中都不是问题,但是如何存储令牌?同时存储在本地/会话存储和 cookie 中是不安全的。目前我有存储所有这些的 Auth 上下文:
import React from "react";
export default React.createContext({
token: null,
userId: null,
address: null,
firstName: null,
lastName: null,
email: null,
company: null,
subscription: null,
login: (token, guid) => {},
logout: () => {},
});
登录后我传入
<AuthApi.Provider
value={{
token,
guid,
login,
logout,
address,
firstName,
lastName,
email,
company,
subscription,
}}
>
在 App.js 中,因此可以使用 useContext 从项目内的所有组件访问它们。
如您所知,刷新浏览器时,我们会丢失所有值。所以基本上在这里我不会将值和 Token 也存储在 cookie 或本地/会话存储中,但我在刷新后会丢失它。如果我无法在后端进行更改,这里最好的解决方案是什么?
【问题讨论】:
-
您是否在后端验证令牌?令牌会过期吗?代币可以撤销吗?来自身份验证提供者的各种工具将令牌存储在 localStorage 中。您对将其存储在那里有什么特别的担忧?当发出任何请求时,令牌也是“可见的”,您可以真正隐藏它。
-
@AlexanderStaroselsky 是的,当我提出请求时,令牌会在后端得到验证。所以基本上我在授权标头中放了一个令牌。
-
这是一个非常基于意见的问题。您需要决定如何处理令牌,无论是会话/本地存储还是 cookie。然后你需要实现它,如果你有问题/错误,你可以更新问题来解决这些问题。
标签: javascript reactjs jwt local-storage token