laravel5.6与thinkphp3.2使用redis共享session的方案

laravel5.6与thinkphp3.2使用redis共享session的方案

内容导读

收集整理的这篇技术教程文章主要介绍了laravel5.6与thinkphp3.2使用redis共享session的方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1744字,纯文字阅读大概需要3分钟

内容图文

这篇文章主要介绍了关于laravel5.6与thinkphp3.2使用redis共享session的方案,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

在实际的项目中,历史项目使用thinkphp3.2开发,现在需要更新功能,更新功能的部分,拟使用laravel5.6进行开发。

问题描述

其中需要解决几个关键问题,其中之一便是用户认证的问题。即在系统1只登录后,系统2中自动识别其登录信息。即本质需要解决:laravel与thiniphp共享session的问题。

方案设计

session采用redis进行存储。thinkphp与laravel共离访问redis,根据相同的cookie,自动获取存储到redis中的认证用户信息。

解决方案

thinkphp开启redis支持

thinkphp3.2并不没有集成session的redis支持,此时,我们使用php中的设置来开启。在index.php中,我们加入以下两行语句:

ini_set("session.save_handler", "redis");ini_set("session.save_path", "tcp://redis:6379");
也可以将其加入到config.php配置文件中

此时, thinkphp在进行session存储时,将以PHPREDIS_SESSION做为前缀进行存储。

laravel开启redis

laravel开启redis的方法相对来讲稍微复杂一些。具体信息,需要参考官方文档使用composer来安装Predis并进行相关配置。

laravel获取thinkphp的session

由于laravel完全弃用了PHP的内置session。所以我们是没有办法能过$_SESSION来获取到任何信息的(你甚至会得一个变量未定义的错误)。由于laravel的cookie进行了加密处理。所以,我们也不能用laravel自带的cookie来获取cookie信息。

具体实现的思路为:
1 获取原生cookie。
2 接拼PHPREDIS_SESSION组成key
3 使用redis直接获取key中存的值

...use IlluminateSupportFacadesRedis;...

$cookie = $_COOKIE['PHPSESSID'];

$session = Redis::get('PHPREDIS_SESSION:' . $cookie);

此$session即为thinkphp系统中的session值。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

以上就是laravel5.6与thinkphp3.2使用redis共享session的方案的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的laravel5.6与thinkphp3.2使用redis共享session的方案全部内容,希望文章能够帮你解决laravel5.6与thinkphp3.2使用redis共享session的方案所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com