【发布时间】:2015-04-28 05:02:33
【问题描述】:
在允许访问 Laravel 5 网站的管理面板之前,我需要为用户进行 ACL 检查。对命名空间App\Http\Controllers\Admin\* 中的整个控制器组执行此操作的最佳方法是什么?最终,我正在寻找一种“一劳永逸”的方法来做到这一点,而中间件看起来是迄今为止最好的选择。
最初的想法是为管理员路由分配一个中间件,但这并不妨碍任何其他非管理员路由访问控制器。这意味着路由仍然可以针对管理控制器并绕过 ACL 检查。
下一个想法是在控制器的构造函数中插入赋值,但这需要每个额外的控制器显式包含中间件。这将要求开发人员知道应该包含中间件,这使他们完全错过了它。这也适用于使用一个基本控制器作为所有管理控制器的父级,因为开发人员需要知道应该扩展基本控制器。目前,这看起来是最好的解决方案。
这让我们回到问题:中间件可以分配给控制器通配符命名空间,如App\Http\Controllers\Admin\*?或者,有没有更好的方法让 ACL 检查永远不需要显式分配给每个管理控制器?
【问题讨论】:
标签: laravel laravel-5 laravel-middleware