Laravel框架 - 为什么我不能在laravel项目的控制器中使用Auth :: user(),(以查看用户是否已登录).会话是否未连接到控制器?
HomeController.php
public function isauthorized(){
if (Auth::user()){
return View::make('home.basic')
->with('basic1', 'Authorized');
}else{
return View::make('home.basic')
->with('basic1', 'Not Authorized');
}
}
Run Code Online (Sandbox Code Playgroud)
我的登录系统正在运行,并且登录时始终设置会话.当我在View或routes.php中调用函数Auth :: user()时,它是成功的.但是当我在控制器中调用该函数时,它是错误的.请帮忙.
小智 13
问题是您没有包含Auth外观.
在你的HomeController.php中:
use Illuminate\Support\Facades\Auth;
Run Code Online (Sandbox Code Playgroud)
小智 7
只需在您的控制器库中添加以下内容。
use Illuminate\Support\Facades\Auth;
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Laravel 5.x,那么您可能拥有auth中间件组件.这可能是缺失的环节.
我经常在我的控制器中使用这样的模式:
public function __construct()
{
$this->middleware('auth');
$this->user = \Auth::user();
}
Run Code Online (Sandbox Code Playgroud)
然后你可以
if ($this->user .. )
要么
if ($this->user->can('something')) 与Entrust或类似
要查看用户是否登录,请勿使用Auth::user(). Auth::check()代替使用。
if (Auth::check()){
return View::make('home.basic')->with('user', Auth::user());
}
Run Code Online (Sandbox Code Playgroud)