【问题标题】:Can I handover sessions from Laravel to my simple MVC?我可以将会话从 Laravel 切换到我的简单 MVC 吗?
【发布时间】:2013-09-27 07:58:04
【问题描述】:

我只是想知道我是否能够将会话变量从 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 时才会初始化,现在我认为我不需要这样做。所以我跳过了它,Basic Stuffs (Auth::Check()) 真的。所以,我只需在我的登录方法中执行此操作。

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

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

【问题讨论】:

    标签: php .htaccess session laravel laravel-4


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2010-10-11
      • 2022-09-29
      • 2021-10-25
      • 1970-01-01
      • 2022-06-16
      • 2020-10-09
      相关资源
      最近更新 更多