该文是wecenter学习笔记的一部分
Controller访问控制实现原理
通过在Controller的get_access_rule
来返回访问控制权限
public function get_access_rule()
{
$rule_action['rule_type'] = 'white';
$rule_action['actions'][] = 'index';
$rule_action['actions'][] = 'save_comment';
return $rule_action;
}
应用启动时会检查action是否在白名单或者黑名单中,从而引导未登陆的用户进行登陆
// 判断访问规则使用白名单还是黑名单, 默认使用黑名单
if ($access_rule)
{
// 黑名单, 黑名单中的检查 'white' 白名单,白名单以外的检查 (默认是黑名单检查)
if (isset($access_rule['rule_type']) AND $access_rule['rule_type'] == 'white')
{
if ((! $access_rule['actions']) OR (! in_array(load_class('core_uri')->action, $access_rule['actions'])))
{
self::login();
}
}
else if (isset($access_rule['actions']) AND in_array(load_class('core_uri')->action, $access_rule['actions'])) // 非白就是黑名单
{
self::login();
}
}
else
{
self::login();
}
访问白名单中action的不需要登陆,而黑名单中的action需要登陆用户才能调用。