我可以将会话从Laravel切换到我的简单MVC吗?

时间:2013-09-22 08:54:08

标签: php .htaccess session laravel laravel-4

我只想知道我是否能够将会话变量从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()。检索会话时没有会话操作。

1 个答案:

答案 0 :(得分:0)

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

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

但这完全是hacky。我建议如果您需要共享会话,而是使用数据库会话驱动程序。这样,您就可以使用标准接口跨应用程序共享任意会话数据。在这种情况下,您只需阅读“laravel_session” cookie,以便能够在数据库中查找会话。如果您想要也从其他应用程序修改此数据,那么会有许多隐藏的陷阱。