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');
}
}
我的登录系统正在运行,并且登录时始终设置会话 . 当我在View或routes.php中调用函数Auth :: user()时,它是成功的 . 但是当我在控制器中调用该函数时,它是错误的 . 请帮忙 .
7 回答
问题是您没有包含Auth外观 .
在你的HomeController.php中:
如果您使用的是Laravel 5.x,那么您可能拥有auth中间件组件 . 这可能是缺失的环节 .
我经常在我的控制器中使用这样的模式:
然后你可以
if ($this->user .. )
要么
if ($this->user->can('something'))
with Entrust or similar加上
使用Illuminate \ Support \ Facades \ Auth;
在您的控制器库中
您需要在控制器中使用Auth外观;
在类定义之前添加此行 .
要查看用户是否已插入,请勿使用
Auth::user()
. 请改用Auth::check()
.使用
Auth::check()
函数检查用户是否已记录我也有同样的问题 . 我发现的解决方案是不使用\ Auth :: user()(它返回null) . 相反,像这样经过警卫:
\Auth::guard('mrm')->User()
. 显然用你正在使用的任何auth guard替换'mrm' .这可以正常返回当前用户,即使Auth :: User返回null,你也可以使用其他方法 - 例如
\Auth::guard('mrm')->check()
而不是\Auth::check()
(总是返回false) .不知道为什么Auth门面不起作用,但至少有一个替代品可以 .