$request->session 在 Laravel 5.3 资源控制器中不起作用

$request->session didn't work in Laravel 5.3 resource controller

首先,我已经在其他控制器(不是资源控制器)中检查过我的会话工作得很好,但是当我在资源控制器中执行它时,我的获取会话代码没有工作。

这是我的资源控制器

  <?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

//tambahan
use DB;
use Session;

//model
use App\_admins;
use App\Mahasiswas;

class MahasiswaController extends Controller
{
    protected $data;
    protected $token;

    public function __contruct(){
        $this->data = array();
        $this->middleware(function ($request, $next) {
            $this->token = $request->session()->get('_admin_id');
            if (!$request->session()->has('_admin_id')) {
                abort(404);
            }
            return $next($request);
        });
    }

    private function user($token){
        $this->data['query'] = _admins::find($token);
    }

    public function index(){
        echo $this->token;
    }

还有更多的public功能,但还是空的,所以我不在这里展示,以免造成混淆。这是我在 web.php:

的路线
Route::group(['namespace' => 'Admin'],function(){

    Route::resource('/admin/mahasiswa','MahasiswaController');
    Route::resource('/admin/nilai','NilaiController');

});

5.3 中,中间件在 constructor 中还没有 运行,因此您无法收集 session 数据。但是使用基于闭包的方法,您应该能够像这样访问它:

$this->middleware(function($request, $next) {
    // Get the session value (uses global helper)
    $this->token = session('_admin_id');

    // If the value is null, abort the request
    if (null === $this->token) abort(404);

    return $next($request);
});