【发布时间】:2015-12-31 00:29:22
【问题描述】:
我正在使用 Laravel 5.1。我的控制器专门用于管理员用户。所以我检查用户是否是管理员。这是我的代码。
public function getAdminData()
{
$this->checkAdminStatus();
return response()->json(array('admin-data'));
}
public function checkAdminStatus()
{
$userManager = new UserManager();
if(!$userManager->isAdmin())
{
return redirect()->route('returnForbiddenAccess');
}
}
我的路线是
Route::any('api/app/forbidden',['uses' =>'ErrorController@returnNonAdminErrorStatus','as'=>'returnForbiddenAccess']);
现在如果用户不是管理员,那么它不应该返回 admin-data 但它会返回。 redirect()->route 调用后不应该停止处理逻辑吗?
这也是纯粹的 REST 应用程序。
【问题讨论】:
-
如果控制器仅供管理员使用,为什么还要检查某人是否是控制器中的管理员?使用将为您进行检查的中间件,如果有人经过身份验证和授权 - 让他们通过控制器。否则将它们发送到授权页面。这个逻辑不是在控制器中完成的,而是在中间件中完成的,就像 Jiedara 的回答一样。
标签: php laravel-5 laravel-routing