我们的网站建立在自定义的php mvc框架之上,我们希望将每个流程(例如:注册)慢慢转换为Laravel。
所以从本质上讲,使用laravel的现有代码和新代码必须共存。但是我们遇到了障碍,由于其惯例,laravel设置的会话信息对其他mvc不起,反之亦然。
例如,自定义mvc使用以下内容。
$_SESSION['AUTH']='TRUE';
虽然Laravel使用这样的东西。
Session::put('AUTH', 'TRUE');
我们尝试通过laravel类设置$ _SESSION ['AUTH'] ='TRUE'。但是当控制权传递给旧的MVC时,我们无法访问它。
我知道它很复杂,我应该等待将整个代码库转换为Laravel,并完成它。但我们是一家资源极少的小公司。因此,我们没有足够的奢侈来停止功能开发并花时间使用Laravel Exclusively重写。
所以我的问题是这个。如果通过任何机制,我们能够实现这一目标吗?
全局变量?
还有其他建议吗?
答案 0 :(得分:3)
我建议您在这里使用Laravel的Auth
- 类,听取auth.login
事件并手动设置会话标记。
Event::listen('auth.login', function($user)
{
$_SESSION['AUTH']='TRUE';
});
这是最简单的方法,您只需在完全迁移到Laravel时删除事件侦听器。
我知道这是一个快速而又脏的东西,但在完全迁移后你不想再使用$_SESSION
来管理你的身份验证;)所以我认为这应该是你之间的一个很好的桥梁新老代码库。
答案 1 :(得分:1)
例如,如果您有以下文件夹结构
projectFolder / oldMVC
projectFolder / Laravel
在oldMvC / main.php中,我们包含以下内容
require '../Laravel/bootstrap/autoload.php';
require_once '../Laravel/bootstrap/start.php';
之后我们可以从非Laravel MVC访问Laravel中设置的会话和其他配置变量。
答案 2 :(得分:1)
实际上只需要bootstrap/autoload.php
和bootstrap/start.php
,您将无法访问真正的Laravel会话。甚至不再致电Application::boot()
。
我创建了一个Gist,可以分享Laravel会话并检查来自外部项目的身份验证: