Laravel 登录 session 共享的问题?

laravel登录session, 如何与同一主域名同一服务器的子站共享, 实现单点登录, 同时也同步退出

附言 1  ·  5年前

laravel的session是存数据库里的,其他的项目也能读取这个数据表,但不知道如何获取数据库中对应的session

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

session 配置存储到redis中,然后在config/session.php中配置'domain' => '*.abc.com',即可在同一主域名的站点下session共享。

5年前 评论
讨论数量: 12

session 配置存储到redis中,然后在config/session.php中配置'domain' => '*.abc.com',即可在同一主域名的站点下session共享。

5年前 评论

前端请求设置 withCredentialstrue

5年前 评论

@jiangxianli 其他子站不是laravel的,怎么获取呢?

5年前 评论

@zhouzishu 登录的时候使用指定的cookie名字,将session_id写入到*.abc.com作用域下。每个子域的项目通过检测对应的cookie是否存在,如果存在拿cookie值(也就是session_id)去redis取登录的用信息。

5年前 评论

@jiangxianli 问个问题,laravel中的cookie,laravel_session里面的值是什么呢,我看删掉这个cookie,session仍然存在

5年前 评论
drinke9

@jiangxianli 这种在多服务器的情况下无法处理吧?

5年前 评论

@drinke9 多服务器同一主域名下,将session都写到同一个redis的同一个库,也是可以的。

5年前 评论
drinke9

@jiangxianli 请问单点登录的系统,如何管理角色和权限呢?

我的理解是,角色和权限都是会绑定用户ID的,在子站点中,没有用户信息表,那是否意味着角色、权限这块逻辑也放在sso(用户认证的站点)中去呢?

期待你的解答~

5年前 评论

@drinke9 既然是子站,功能模块业务都是不一样的,权限也是不一样的。可以放到子站里面去控制的。

5年前 评论
drinke9

@jiangxianli 好的,感谢回复

5年前 评论

同一个主域名,不同子域名服务共享session:
可以在env里设置session存储的方式为cookie
然后设置session存储域为顶级域名
配置如下:

SESSION_DRIVER=cookie
SESSION_DOMAIN=baidu.com
5年前 评论

都是laravel 项目的话 把2个项目 APP_KEY 改成一样的就行了
或者自己加密cookie

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!