Node.js中通过已认证用户创建团队无法获取auth.user问题求助
排查解决步骤
你当前使用的是AdonisJS框架,配置auth中间件后无法获取认证用户可按以下顺序操作:
- 确认路由中间件配置正确
检查路由定义是否确实绑定了auth中间件,正确写法示例:
如果你使用多guard认证(比如同时存在api、session两种认证模式),需要明确指定guard,比如Route.post('/teams', 'TeamsController.store').middleware('auth')middleware('auth:api')。 - 确认请求携带了有效认证凭证
如果使用API令牌认证,请求头必须携带正确的Authorization: Bearer <登录接口返回的有效令牌>,令牌过期、前缀拼写错误、漏传都会导致认证失效,无法拿到用户信息。 - 代码侧补充主动认证校验
即使配置了全局中间件,也建议在业务代码中主动调用auth.authenticate()触发认证校验,校验失败会直接抛出异常,校验通过即可正常获取用户信息。修改后的代码如下:public async store({ request, auth, response }: HttpContextContract) { // 主动触发认证校验,确保拿到已登录用户 const user = await auth.authenticate() const validations = await schema.create({ name: schema.string({}), size: schema.string({}), }) const data = await request.validate({ schema: validations }) // 如需关联团队和创建用户,补充userId字段赋值 const team = await Team.create({ ...data, userId: user.id }) return response.created(team) } - 确认模型和表结构关联正常
检查Team模型是否正确定义了和User模型的关联,teams表是否存在对应user_id外键字段。
内容的提问来源于stack exchange,提问作者ManaguaMan
相关产品推荐
相关产品推荐

