Laravel 如何根据给定的 session 取出用户?

问题描述

现在的一个场景是,GET 方式请求一个 url,不带 cookie,所以 session 通过 query 传递,例如:

https://www.example.com/getxx...

那么,在控制器里获取到这个 sessionid 后,如何获取这个登录用户?

换句话说,Laravel 如何根据 sessionid 进行身份认证。

$request->session()->setId('zvxBAKjfgABQa0Gf1BepMsjtwONilFEWbhHGA6EG');

尝试过先设置当前的 sessionid,再用 Auth::user() 获取,是获取不到的。大家有什么方式吗?

阅读 4.7k
2 个回答

重启session就可以了
clipboard.png

数据库存储 Session

因为从迁移文件中可以看出 sessions 表中包含 user_id 字段,可以自行查询取出用户。

文件存储 Session

需要反序列化得到相应的 Session 信息从中提取 User id

Redis 和 Memcached

未测试,但是应该属于上面两种的一种。

多说两句

这种情况非常不安全、Session 或者 Cookie 如果暴露也就意味着用户的登陆凭证暴露。建议采用 JWT 或者 OAuth 方式进行用户认证。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题