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

Laravel会话表自定义USER_ID字段:登录后user_id为空的解决方法

解决Laravel数据库Session中user_id为空的问题

1. 正确配置User模型的主键

Laravel默认用id作为用户模型的主键,你的自定义表主键是USUARIOS_ID,必须在User模型里显式声明:
打开app/Models/User.php,添加或修改以下属性:

// 指定自定义主键名
protected $primaryKey = 'USUARIOS_ID';

// 如果USUARIOS_ID不是自增整数类型(比如字符串UUID),需添加此行
// public $incrementing = false;

// 若主键类型不是int,还要指定类型(可选)
// protected $keyType = 'string';

2. 检查Session表的user_id字段类型

确保session表的user_id字段类型和USUARIOS_ID完全匹配:

  • 若USUARIOS_ID是int(11),session表的user_id也应为int(11)(允许NULL)
  • 若为字符串类型(如varchar(255)),user_id字段也要对应设置相同类型

3. 使用Laravel官方认证方法登录

必须用Laravel自带的认证逻辑登录,才能自动把用户ID写入Session的user_id字段:

  • 用Auth::attempt($credentials)验证并登录用户
  • 或用Auth::login($user)直接登录已获取的用户实例
    避免手动操作Session存储用户信息,这种方式不会自动填充user_id字段。

4. 清除配置缓存

修改模型配置后,需要清除缓存确保生效:

php artisan config:clear
php artisan cache:clear

5. 验证用户认证标识符

登录后可以打印Auth::user()->getAuthIdentifier(),确认返回的是USUARIOS_ID的正确值——这就是Laravel存入Session user_id字段的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:29:59