Прежде всего, я уже проверял, что в другом контроллере (не в контроллере ресурсов) мой сеанс работает очень хорошо, но когда я это сделал в контроллере ресурсов, мой код для сеанса сеанса не работал.
Вот мой контроллер ресурсов
<?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; }
Существует более публичная функция, но она по-прежнему пуста, поэтому я не показываю ее здесь, чтобы избежать путаницы. И вот мой маршрут в 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); });