我正在将一个用PHP编写的应用程序迁移到Laravel。我还不能将功能从PHP文件中移出,所以我将它们放在/public
目录中,一切都很好。然而,旧的应用程序在用户登录时设置了$_SESSION["userId"]
,并且在大多数文件中都会引用它来识别当前用户。
我知道Laravel的会话不是原生PHP会话。我已经将session_start()
添加到我的app.php
文件中,并在用户登录时设置$_SESSION["userId"]
,但旧应用程序文件中的$_SESSION["userId"]
始终为undefined
。
我觉得有一块拼图我还没找到,但我还是弄不明白。我使用的是全新的Laravel 5.6安装。
用于澄清的编辑
旧的应用程序由许多PHP文件组成,每个文件echo
ing JSON数据,这些数据通过ajax请求调用。我只是将它们放在public
目录中,并且在我们的Angular前端中的旧URL没有任何更改。
Angular应用程序通过index.blade.php
提供服务,控制器在返回视图之前调用session_start()
并设置$_SESSION["userId"]
变量。
发布于 2018-06-02 03:45:20
这是我最终实现的一个简化版本。它需要对执行所有ajax请求的URL进行更改。
web.php
Route::post('old/{filename}', 'OldController@post');
OldController.php
public function post(Request $request, $filename)
{
if (session_id() == "") {
session_start();
}
if (Auth::check()) {
$_SESSION['userId'] = Auth::user()->userId;
}
$filePath = realpath(app_path() . '/../response/' . $filename);
include $filePath;
}
https://stackoverflow.com/questions/50645039
复制相似问题