检查对象权限的最佳位置在哪里?

时间:2015-04-04 14:05:57

标签: design-patterns laravel-4

我正在使用Laravel作为我的应用程序,我想问一下检查对象权限的最佳位置在哪里。

每个模型都有checkPermissions()方法。

因此,如果用户提出更改模型的请求,则客户端路由器将在控制器中调用方法updateClient()。我应该这样做:

$client = Client::find(Input::get('id'));
$client->checkPermissions();

或者我应该创建一个新方法来获取客户端并检查其中的权限? :

$client = Client::getClientById($id);

其中getClientById()是在客户端模型上定义的方法,它检查权限......

您能说明为什么选择一种或另一种解决方案吗? 感谢

2 个答案:

答案 0 :(得分:0)

没有单一的“最佳地点”。这取决于您的申请。

但实际上有两种选择。

  1. 在过滤器中。这样您就可以在请求到达控制器之前对其进行过滤,并确保他们可以访问他们尝试访问的记录

  2. 在控制器中,使用上面给出的示例。

  3. 在模型中进行auth检查不是一个好主意 - 模型应该只关注获取数据,而不是进行身份验证。

答案 1 :(得分:0)

您可以使用模板步骤定义访问机制(检查权限,然后从控制器内部访问数据)..我同意w / @theshiftchange该模型不应该知道权限等。