我正在使用Laravel作为我的应用程序,我想问一下检查对象权限的最佳位置在哪里。
每个模型都有checkPermissions()方法。
因此,如果用户提出更改模型的请求,则客户端路由器将在控制器中调用方法updateClient()。我应该这样做:
$client = Client::find(Input::get('id'));
$client->checkPermissions();
或者我应该创建一个新方法来获取客户端并检查其中的权限? :
$client = Client::getClientById($id);
其中getClientById()是在客户端模型上定义的方法,它检查权限......
您能说明为什么选择一种或另一种解决方案吗? 感谢
答案 0 :(得分:0)
没有单一的“最佳地点”。这取决于您的申请。
但实际上有两种选择。
在过滤器中。这样您就可以在请求到达控制器之前对其进行过滤,并确保他们可以访问他们尝试访问的记录
在控制器中,使用上面给出的示例。
在模型中进行auth检查不是一个好主意 - 模型应该只关注获取数据,而不是进行身份验证。
答案 1 :(得分:0)
您可以使用模板步骤定义访问机制(检查权限,然后从控制器内部访问数据)..我同意w / @theshiftchange该模型不应该知道权限等。