該文是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需要登陸用戶才能調用。