我正在开发一个完全出于娱乐和教育目的的自定义框架。我已经阅读了这个关于如何实现权限的问题,我喜欢这些答案;使用装饰器模式和/或根据调度程序的 URL 检查权限。
我的问题是应该如何生成权限白名单?我不希望我的控制器中的每个方法都需要执行权限,因此我可以使用特殊的命名约定,例如在方法名称前加上“x”:
class CalendarController
{
public function index($year = null, $month = null, $day = null)
{
// display calendar (no permission needed)
}
public function xAddEvent()
{
// display form to add event (permission required)
}
public function xAddEventSubmit()
{
// submit form to add event (permission required)
}
}
然后我可以编写一个脚本来遍历我的所有控制器并返回 x 方法,给我分配给不同角色的权限列表。
另一种选择可能是将权限硬编码为每个控制器的属性,例如:
class CalendarController
{
public $permissions = array('addEvent',
'addEventSubmit');
public function index($year = null, $month = null, $day = null)
{
// display calendar (no permission needed)
}
public function addEvent()
{
// display form to add event (permission required)
}
public function addEventSubmit()
{
// submit form to add event (permission required)
}
}
有没有更好的选择或者我在正确的轨道上?