首先,我已经在其他控制器(不在资源控制器中)检查我的会话工作得很好,但是当我在资源控制器中执行它时,我的get会话代码不起作用。
这是我的资源控制器
<?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');
});
答案 0 :(得分:2)
在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);
});