我有一个Session表,我通过在REST API中进行身份验证来为用户创建会话。
会话与用户有关系,因此我可以从会话中检索用户对象。
我想创建一个Eloquent范围来检索登录的currentUser,如Session::currentUser()->id
,其中Authorization标头等于Session表中的标记。
我似乎无法在scopeCurrentUser()
中使用请求实例。不能通过控制器注入它,如下所示:
public function __construct(Request $request) {
$this->request = $request;
}
还尝试将其注入方法(从Laravel 5开始就可以)
public function scopeCurrentUser($query, Request $request)
{
return $query->where('token', $request->header('Authorization'));
}
任何方式我都可以获得$request->header('Authorization')
?
答案 0 :(得分:1)
您可以使用app('Illuminate\Http\Request')
或Request::
来获取请求实例(请确保您的文件顶部有use Request;
)。
所以要么你有
use Request;
public function scopeCurrentUser($query)
{
return $query->where('token', Request::header('Authorization'));
}
或
public function scopeCurrentUser($query)
{
return $query->where('token', app('Illuminate\Http\Request')->header('Authorization'));
}
据我所知,你不能在Eloquent方法中进行依赖注入(至少在我尝试时它不起作用)。