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

AdonisJS更新认证用户profile时auth.correct.user读取user属性报错

报错根因

auth 对象上不存在 correct 这个属性,导致 auth.correct 取值为 undefined,尝试读取 undefined 的 user 属性就触发了该错误。

修复步骤

你大概率是拼写错误写错了auth对象的属性名,主流Node.js后端框架(包括你当前使用的AdonisJS)获取已登录认证用户的正确写法为auth.user,不需要中间的correct字段。

完整修复后的代码如下:

public async update({ request, auth, response }) {
        try {
            // 先校验登录状态,避免未登录时报错
            const user = auth.user
            if (!user) {
                return response.status(401).json({
                    status: 'error',
                    message: '未登录,请先完成身份认证'
                })
            }
            user.firstName = request.input('firstName')
            user.lastName = request.input('lastName')
            user.email = request.input('email')
            
            // 密码需要单独加密处理,不要直接存储明文
            const newPwd = request.input('password')
            if (newPwd) {
                // AdonisJS 框架用自带的Hash工具加密,其他框架替换为对应哈希方法即可
                user.password = await Hash.make(newPwd)
            }

            await user.save()

            return response.json({
                status: 'success',
                message: 'Profile updated!',
                data: user
            })
        } catch (error) {
            console.log(error);
            return response.status(500).json({
                status: 'error',
                message: '更新失败,请稍后重试'
            })
        }
    }

额外注意项

  • 确保你的更新接口已经配置了Auth中间件,只有登录状态的用户才能调用该接口
  • 永远不要直接存储用户提交的明文密码,必须经过单向哈希加密后再存入数据库
  • 如果修改后仍有问题,可以先打印完整的auth对象,确认当前框架在auth对象上挂载用户信息的对应字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:27:08