laravel5.2 session的問題

來源:互聯網
上載者:User

第一個問題

Route::get('test', function () {        session(['wechat.oauth_user'=>1]);        dd(session('wechat.oauth_user'));    });

輸出1,然後我把session(['wechat.oauth_user'=>1]);注釋了

Route::get('test', function () {        //session(['wechat.oauth_user'=>1]);        dd(session('wechat.oauth_user'));    });

重新整理頁面,輸出null,這是為什嗎?

第二個問題

我使用了overtrue/wechat的外掛程式,用外掛程式內建的中介軟體成功擷取了使用者資訊,然後user路由裡也輸出了session

    public function handle($request, Closure $next, $guard = null)        {            $wechat = app('EasyWeChat\\Foundation\\Application');                if (!session('wechat.oauth_user')) {                if ($request->has('state') && $request->has('code')) {                    session(['wechat.oauth_user' => $wechat->oauth->user()]);                                        return redirect()->to(url($request->url(), array_except($request->query(), ['code', 'state'])));                }                    return $wechat->oauth->redirect($request->fullUrl());            }                return $next($request);        }
    Route::get('user', function () {                dd(session('wechat.oauth_user'));        });

在這個基礎上,我建立了自己的中介軟體UserMiddleware

    public function handle($request, Closure $next)        {            if(Auth::guard('web')->guest()){                if (!session('wechat.oauth_user')) {                    return redirect('user');                }                else{                    User::CreateOrLogin(session('wechat.oauth_user'));                }            }                    return $next($request);        }

User.php 方法 CreateOrLogin

    public static function CreateOrLogin($data){            $user=self::getByOpenid($data['id']);            if(!$user){                $create=['openid'=>$data['id']];                $user=self::create($create);            }            Auth::guard('web')->login($user);        }            public static function getByOpenid($openid){            return self::where('openid','=',$openid)->first();        }

一切都是ok的,但是每次重新整理頁面都會執行擷取使用者資訊的介面,然後一個個注釋掉,發現Auth::guard('web')->login($user);這句注釋掉後,重新整理頁面就不會再跳轉到,加上去就要跳轉到擷取使用者資訊介面,感覺像是login會清除掉session一樣

問題三

Route::group(['middleware' => ['web']], function () {    Route::get('test', function () {        dd(auth()->user());    });    Route::get('test2', function () {        dd(auth()->loginUsingId(1));    });});

先訪問test2,成功登陸,再訪問test,輸出null,為什麼。。。

問題一和問題二和問題三沒有關聯,求大神解答

回複內容:

第一個問題

Route::get('test', function () {        session(['wechat.oauth_user'=>1]);        dd(session('wechat.oauth_user'));    });

輸出1,然後我把session(['wechat.oauth_user'=>1]);注釋了

Route::get('test', function () {        //session(['wechat.oauth_user'=>1]);        dd(session('wechat.oauth_user'));    });

重新整理頁面,輸出null,這是為什嗎?

第二個問題

我使用了overtrue/wechat的外掛程式,用外掛程式內建的中介軟體成功擷取了使用者資訊,然後user路由裡也輸出了session

    public function handle($request, Closure $next, $guard = null)        {            $wechat = app('EasyWeChat\\Foundation\\Application');                if (!session('wechat.oauth_user')) {                if ($request->has('state') && $request->has('code')) {                    session(['wechat.oauth_user' => $wechat->oauth->user()]);                                        return redirect()->to(url($request->url(), array_except($request->query(), ['code', 'state'])));                }                    return $wechat->oauth->redirect($request->fullUrl());            }                return $next($request);        }
    Route::get('user', function () {                dd(session('wechat.oauth_user'));        });

在這個基礎上,我建立了自己的中介軟體UserMiddleware

    public function handle($request, Closure $next)        {            if(Auth::guard('web')->guest()){                if (!session('wechat.oauth_user')) {                    return redirect('user');                }                else{                    User::CreateOrLogin(session('wechat.oauth_user'));                }            }                    return $next($request);        }

User.php 方法 CreateOrLogin

    public static function CreateOrLogin($data){            $user=self::getByOpenid($data['id']);            if(!$user){                $create=['openid'=>$data['id']];                $user=self::create($create);            }            Auth::guard('web')->login($user);        }            public static function getByOpenid($openid){            return self::where('openid','=',$openid)->first();        }

一切都是ok的,但是每次重新整理頁面都會執行擷取使用者資訊的介面,然後一個個注釋掉,發現Auth::guard('web')->login($user);這句注釋掉後,重新整理頁面就不會再跳轉到,加上去就要跳轉到擷取使用者資訊介面,感覺像是login會清除掉session一樣

問題三

Route::group(['middleware' => ['web']], function () {    Route::get('test', function () {        dd(auth()->user());    });    Route::get('test2', function () {        dd(auth()->loginUsingId(1));    });});

先訪問test2,成功登陸,再訪問test,輸出null,為什麼。。。

問題一和問題二和問題三沒有關聯,求大神解答

檢查是否載入了 web 中介軟體

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.