【原创】thinkphp5.1 共享session

tp5.1与nextcloud整合到了一起,用户表是共用的,想做session共享进行同步登录

总登录入口使用的nc中现成的页面及逻辑,

tp中session共享的代码为:

$sessionName = config('session_name');
session_name($sessionName);
$sessionId = cookie($sessionName);
session_id($sessionId);
其中config('session_name');与nc config.php中的instanceid一致

nc中登录成功后使用$_SESSION['uid'] = xxx;

但tp中使用print_r(Session::get('uid'));并无内容,经过一番测试发现tp中的session是有前缀的,在config/session.php中可以看到

return [
    'id'             => '',
    // SESSION_ID的提交变量,解决flash上传跨域
    'var_session_id' => '',
    // SESSION 前缀
    'prefix'         => 'think',
    // 驱动方式 支持redis memcache memcached
    'type'           => '',
    // 是否自动开启 SESSION
    'auto_start'     => true,
];
所以,解决办法为:在nc登录成功之后设置$_SESSION['think']['uid'] = xxx;
这样tp中print_r(Session::get('uid'));就可以打印出uid的值了
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注