部署MedusJs后管理面板所有请求返回401未授权问题求助
检查CORS配置
确认后端medusa-config.js里的CORS设置包含管理面板的线上域名,示例配置:module.exports = { projectConfig: { cors: process.env.CORS || "https://your-admin-domain.com", // 其他配置项... }, // 其他配置块... }若需支持多域名,可设置为数组格式
["https://your-admin-domain.com", "http://localhost:7000"],部署后务必保证线上域名准确无误。验证JWT密钥一致性
管理面板与后端必须使用完全相同的JWT_SECRET和ADMIN_JWT_SECRET。检查后端medusa-config.js的配置,同时确认管理面板.env文件中的REACT_APP_ADMIN_JWT_SECRET与后端的ADMIN_JWT_SECRET完全匹配,注意避免空格、大小写等细节错误。核对管理面板API地址配置
确保管理面板.env文件中REACT_APP_MEDUSA_BACKEND_URL指向正确的后端线上地址,示例:REACT_APP_MEDUSA_BACKEND_URL=https://your-medusajs-backend.com地址末尾不要添加斜杠,防止请求路径拼接出错。
调整Cookie跨域参数
后端需配置Cookie的跨域属性,在HTTPS生产环境下,将secure设为true,sameSite设为none,确保跨域场景下Cookie能正常传递。修改medusa-config.js的projectConfig:projectConfig: { cookieOptions: { secure: process.env.NODE_ENV === "production", sameSite: process.env.NODE_ENV === "production" ? "none" : "lax", }, // 其他配置项... }检查登录Token有效性
打开浏览器开发者工具,查看管理面板登录后localStorage中是否存在medusa_admin_token,并通过后端/admin/auth/validate接口验证Token有效性。若Token无效,清除浏览器缓存和Cookie后重新登录。确认管理员账户权限
使用命令medusa user create -e your-email@example.com -p your-password重新创建管理员账户,确保账户具备完整的后台操作权限。
内容的提问来源于stack exchange,提问作者Jacob Mutale

