我一直在尝试让middleware
根据用户的类型执行不同的任务。
这是一个路线组。
Route::group(array('prefix' => 'api', 'middleware' => 'admin'), function () {
Route::resource('animal', 'AnimalController');
//Other resources
});
我的User
模型有两种类型,可以通过以下方式访问。
$this->user()->user_type_id;
Following this advice,我正在尝试此任务,handle
中的App\Http\Middleware\Authenticate
功能现在看起来就是这样。
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ((Auth::user()->user_type_id == 2) {
//If the user is of type 2, this will be triggered
if ($request->ajax()) {
return response('You are type 2.', 401);
}
//Maybe there are other libes here
} else if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
}
return $next($request);
}
我认为当用户访问前缀为response('You are type 2.', 401)
的网址时,这会导致类型2的用户获得api/animal
,但我在响应中看到了一条消息Unauthorized.
。
是否可以让身份验证中间件以这种方式工作? 任何建议将不胜感激。
答案 0 :(得分:0)
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
} else if ($this->user()->user_type_id == 2) {
//If the user is of type 2, this will be triggered
return response('You are type 2.', 401);
}
试试这个。