1

我只想知道我是否能够将会话变量从 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();
    }
}

所以,这是我的会话服务,只有当它从控制器传递 Auth 时才会初始化,现在我认为我不需要这样做。所以我跳过了它,(Auth::Check())真的是基本的东西。所以,我只是在我的登录方法中执行此操作。

$old = new Services\Session\OldSessionAuth();
$old->setSession();
return Redirect::to('/');

主页由我定制的 MVC 控制,我想抓取会话,在这种情况下我不能。它显示Array(). 检索会话时没有会话操作。

4

1 回答 1

0

Laravel 已经有一个非常好的会话抽象,所以我认为你不需要直接使用session_start()$_SESSION。跨两个应用程序共享会话有点棘手。如果您使用 cookie 方法,那么您必须确保使用的会话驱动程序是 cookie 驱动程序。您还需要确保对 cookie 的限制不会使您的其他应用程序不会被用户的浏览器发送。

默认情况下,PHP 将使用文件 cookie 驱动程序。在这种情况下,您在其他应用程序中必须做的是读取“PHPSESSID” cookie,使用session_id()此设置会话 ID,然后您才能使用$_SESSION其他应用程序中的变量访问会话数据。

不过,这一切都很hacky。如果您需要共享会话,我建议您使用数据库会话驱动程序。这样,您就可以使用标准接口在应用程序之间共享任意会话数据。在这种情况下,您只需读取“laravel_session” cookie 即可在数据库中查找会话。如果您还想从其他应用程序修改此数据,则会有许多隐藏的陷阱。

于 2015-09-17T17:02:57.320 回答