【发布时间】:2017-06-12 07:04:27
【问题描述】:
我创建了一个中间件,它只允许具有client 角色的用户。
但是当我使用中间件时,它仍然让用户访问没有客户端角色的路由。
public function handle($request, Closure $next)
{
$user = \Auth::user();
if ($user && $user->role = 'client') {
return $next($request);
}
return redirect('home');
}
这是我的路线。我对其他工作正常的中间件做了同样的事情。但不是这个
Route::group(['middleware'=>['auth']],function(){
Route::group(['middleware'=>['client']],function(){
Route::get('/index',[
'as' => 'index',
'uses' => 'HomeController@showCandidates',
]);
});
});
当角色不是客户端时,它不应该允许访问路由,但确实可以。
edit 根据 alexey 的回答,我用 == 更改了我的其他中间件,上面的问题就解决了。但是即使我的角色是面试官,下面的中间件也会限制我访问路由。
public function handle($request, Closure $next)
{
$user = \Auth::user();
if($user && $user->roles == 'interviewer'){
return $next($request);
}
return redirect('home');
}
这是我的路线
Route::group(['middleware'=>['auth','interviewer']],function(){
Route::get('/candidates', [
'uses' => 'candidateController@showProfile',
]);
});
我在这里犯的可能错误是什么。当= 用于面试官中间件和== 用于客户端中间件时,它可以正常工作,反之亦然。
【问题讨论】: