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

session_start()Laravel はすでにかなり優れたセッション抽象化を備えているため、$_SESSIONなどを直接使用する必要はないと思います。2 つのアプリケーション間でセッションを共有するのは少し難しいです。Cookie アプローチの使用に縛られている場合は、使用中のセッション ドライバーが Cookie ドライバーであることを確認する必要があります。また、Cookie に対する制限が、他のアプリケーションがユーザーのブラウザーによって送信されないようにするようなものではないことを確認する必要があります。

デフォルトでは、PHP はファイル Cookie ドライバーを使用します。この場合、他のアプリケーションで行う必要があるのは、"PHPSESSID" cookie を読み取り、これを使用してセッション ID を設定することです。そうして初めて、他のアプリケーションの変数session_id()を使用してセッション データにアクセスできるようになります。$_SESSION

ただし、これはすべてかなりハックです。セッションを共有する必要がある場合は、代わりにデータベース セッション ドライバーを使用することをお勧めします。このようにして、標準インターフェースを使用してアプリケーション間で任意のセッション データを共有できます。この場合、代わりに「laravel_session」 Cookie を読み取るだけで、データベースでセッションを検索できます。ただし、このデータを他のアプリケーションからも変更したい場合は、多くの隠れた落とし穴があります。

于 2015-09-17T17:02:57.320 に答える