我只想知道我是否能够将会话变量从Laravel移交给我的自定义代码。我的意思是:我想通过Laravel处理登录并将其传递给我不在Laravel中的个人资料部分。大多数路由由.htaccess
文件处理。目标是只使用Laravel auth登录并将其保存到$_SESSION['user']
var并重定向到/profile
。不知怎的,我不明白。在Laravel的session.php的cookie名称和我的自定义代码常量中,会话名称相同。还有其他因素我应该考虑吗?
好的,这是代码:
namespace Services\Session;
class OldSessionAuth
{
protected $auth;
function __construct()
{
$this->auth = \Auth::user();
}
public function setSession()
{
$_SESSION['user'] = $this->auth->toArray();
$_SESSION['auth'] = 'TRUE';
return true;
}
public function destroy()
{
session_destroy();
session_unset();
}
}
所以,这是我的Session服务,只有当它从控制器传递Auth时才被初始化。现在我想我不需要这样做。所以我滑了它,基本的东西(Auth::Check())
真的。所以,我只是在登录方法中这样做。
$old = new Services\Session\OldSessionAuth();
$old->setSession();
return Redirect::to('/');
主页由我定制的MVC控制,我想抓住会话,在这种情况下,我不能。它显示Array()
。检索会话时没有会话操作。
答案 0 :(得分:0)
Laravel已经有了很好的会话抽象,所以我认为你不需要直接使用session_start()
,$_SESSION
等。跨两个应用程序共享会话有点棘手。如果您使用cookie方法,那么您必须确保使用的会话驱动程序是cookie。您还需要确保对cookie的限制不会使用户的浏览器不向您发送其他应用程序。
默认情况下,PHP将使用文件cookie驱动程序。在这种情况下,您需要在其他应用程序中执行的操作是阅读“PHPSESSID” cookie,使用session_id()
将会话ID设置为此,然后才能访问会话数据使用其他应用程序中的$_SESSION
变量。
但这完全是hacky。我建议如果您需要共享会话,而是使用数据库会话驱动程序。这样,您就可以使用标准接口跨应用程序共享任意会话数据。在这种情况下,您只需阅读“laravel_session” cookie,以便能够在数据库中查找会话。如果您想要也从其他应用程序修改此数据,那么会有许多隐藏的陷阱。