首頁 > 後端開發 > php教程 > 關於 Laravel Session 的困惑,望高手解決

關於 Laravel Session 的困惑,望高手解決

WBOY
發布: 2016-08-26 10:12:54
原創
898 人瀏覽過

在laravel5.*中,session start被放到了web中間件中,如

<code>    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,   //<---------
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];</code>
登入後複製

並且根據Route載入中間件的程式碼可以得知Controller是在被make之後才呼叫中間件

<code>    /**
     * Get the middleware for the route's controller.
     *
     * @return array
     */
    public function controllerMiddleware()
    {
        if (! $this->isControllerAction()) {
            return [];
        }

        return ControllerDispatcher::getMiddleware(
            $this->getController(), $this->getControllerMethod()
        );
    }</code>
登入後複製

這個時候問題就來了,我有一個BaseController,在構造函數裡面會判斷用戶登錄狀態,如果已經登錄就獲取登錄用戶信息保存到$this->login_user_info中供子類調用,如果先make controller,session還沒有start,因此在建構函式中是無法取得到登入使用者的session_id,部分程式碼如下

<code>/**
 * 控制层公有方法集合
 * Class BaseController
 */
abstract class BaseController extends Controller
{

    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public $login_user_info;
    public $login_subuser_info;

    public function __construct()
    {
        $this->userModel    = app(UserModel::class);
        if (session()->get('user_id')) {
            $this->login_user_info          = $this->userModel->getLoginUser();
            //设置模板全局变量
            view()->share(['login_user_info' => $this->login_user_info]);
        }
    }</code>
登入後複製

我測試過在middleware中是可以得到session,因為這個時候已經執行了StartSession中間件程式碼,至於我為什麼要這麼做就說來話長,我的專案是一個老專案切換框架到laravel,所以為了最大限度的保持原有邏輯,並且還有一些奇奇怪怪的寫法,沒有採用Auth,這些暫且不論,有沒有辦法可以在構造函數中得到session,求各位大神幫忙,謝謝

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板