我正在实施一个禁止系统。我有一个管理员视图,管理员可以禁止用户。如果管理员在那一刻禁止用户,我想注销他。类似Auth::logout($user)
。这可能吗??或者我必须在我的所有路线上添加一个过滤器来检查登录的用户是否被禁止。
过滤器是最好的选择。解决这个问题既简单又干净,见下面的例子。
如果用户在任何时候被禁止,它将在用户下一次请求时注销用户,您可以使用会话flash消息重定向用户,您的登录代码可以正常工作。
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::guest('login');
}
}
else
{
// If the user is banned, immediately log out.
if(Auth::check() && !Auth::user()->bannedFlag)
{
Auth::logout();
Session::flash('message','Your account is banned, please contact your administrator to active your account');
// redirect to login page
return Redirect::to('/');
}
}
});
对于您的路线,请使用团体路线
Route::group(array('before' => 'auth'), function()
{
//use your routes
});