【问题标题】:Routes: Check if session exists in Laravel路由:检查 Laravel 中是否存在会话
【发布时间】:2019-12-09 19:43:57
【问题描述】:

所以在我的LoginController.php, 中,我为下面的不同post request variables 启动了一个会话,其中会话代码位于经过身份验证的 auth 函数内。

 protected function authenticated(Request $request, User $user){
     $request->session()->put('param1',$param1);
     $request->session()->put('param2',$param2);
     $request->session()->put('param3',$param3);
     .....
 }

我可以像这样在不同的控制器中轻松访问这些会话

$request->session()->get('param1')

我也在注销触发时放置了这段代码..

session()->flush();

但我还需要保护我的route,如果这些session existsnot

如果会话不存在,我要做的是不允许用户访问这些路由 web.php

Route::group(['middleware'=> ['auth']], function(){

Route::get('/pay', 'PayController@index');
Route::post('pay/getReceipt', 'PayController@getReceipt')->name('getReceipt');
....

});

【问题讨论】:

  • laravel 确实有 StartSession 中间件。如果您的路由调用该中间件,则每次请求都会启动会话

标签: php laravel


【解决方案1】:

创建一个中间件,检查这些会话参数是否存在,然后将您的路由包装在其中。

public function handle($request, Closure $next)
{
    if (Session::has('your_params')) {
        return $next($request);
    }

    return redirect()->back();
}

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2017-10-02
    • 2015-09-15
    • 2016-04-02
    • 2017-07-06
    • 2014-07-21
    • 2011-12-29
    • 2013-02-26
    • 2013-05-22
    相关资源
    最近更新 更多