You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React客户端如何经Express中间件管理JWT实现Flask路由认证?

JWT路由认证的问题与疑问

背景

我基于Flask框架,使用flask-jwt-extended库实现JWT路由认证,登录时生成JWT并以http-only Cookie形式返回,代码如下:

app.config["JWT_COOKIE_SECURE"] = False # 本地环境设为False
app.config["JWT_TOKEN_LOCATION"] = ["cookies"]
app.config['JWT_CSRF_IN_COOKIES'] = True
..........
access_token = create_access_token(identity= token)
response_data = jsonify({
   'success': True,
   'message': 'You have successfully logged in',
})
set_access_cookies(response_data, access_token)

之后我将该token通过http-only Cookie传递给Express中间件,中间件中获取token和CSRF token,对JWT进行解码并将CSRF token保存到Cookie,代码如下:

const setCookieHeader = response.headers['set-cookie']
const access_token_cookie = setCookieHeader[0]
.......
const csrf_access_token = setCookieHeader[1]

var decodes_jwt = jwt.verify(token, config.jwtSecret)

疑问

  • 中间件中解码JWT的操作是否合理?
  • React客户端该如何获取JWT并在后续请求中发送?
  • 部分场景仅发送csrf_access_token即可完成认证、无需JWT,这种方式是否有效?

当前实现问题

我在中间件中发起请求的代码:

const axiosInstance = axios.create({
  withCredentials: true,
})
axiosInstance.post(`${clientUrls.cloudapi}/get_my_route`,
{},
{ headers: {
  'Content-Type': 'application/json',
  // 'Authorization': `Bearer ${req.get('Authorization').split('bearer ')[1]}`,
  // Authorization: `Bearer ${req.cookies['csrf']}`
  'X-CSRF-TOKEN': req.cookies['csrf'],
 }
 }).then((response) => {

Flask后端的认证路由代码:

@app.route("/get_my_route", methods=["POST"])
@jwt_required()
def _getRoute():
  current_user = get_jwt_identity() 
  ........

当前请求返回401 Unauthorized,核心问题是:React客户端该如何管理JWT,使其能通过中间件发送至后端完成请求验证?


内容的提问来源于stack exchange,提问作者The_elevator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:37:25