在laravel 5.4
class AdminController extends Controller
{
public function checkLogin(Request $request)
{
Session::put('admin','yes');
return redirect('mobiles');
}
}
class MobilesController extends Controller
{
public function __construct()
{
if( ( Session::has('admin') ) )
{ dd('admin');}
else
{ dd('not admin'); }
}
}
它会打印'not admin'所以会话会发生什么,如果我在类checkLogin中打印管理会话,它会正常打印
答案 0 :(得分:1)
由于 L5.3 ,您无法访问控制器构造函数中的会话。你必须使用一个闭包:
public function __construct()
{
$this->middleware(function ($request, $next) {
echo Session::has('admin') ? 'admin' : 'not admin';
return $next($request);
});
}
https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors
答案 1 :(得分:0)
而不是
Session::has('admin')
您可以使用
session()->has('admin')
答案 2 :(得分:0)
你必须使用laravel flashhed-session-data
https://laravel.com/docs/5.4/redirects#redirecting-with-flashed-session-data
a.onclick = test;
所以像这样修改你的代码
return redirect('mtest2')->with('admin','yes');
如果您不想使用闪烁数据
,这是更新的代码class AdminController extends Controller {
public function checkLogin(Request $request){
return redirect('mobiles')->with('admin',true);
}
}
class MobilesController extends Controller {
public function __construct() {
if( session()->has('admin') ){
dd('admin');
}else{
dd('not admin');
}
}
}
它应该有用。