該文是wecenter學(xué)習(xí)筆記的一部分
Controller訪問(wèn)控制實(shí)現(xiàn)原理
通過(guò)在Controller的get_access_rule來(lái)返回訪問(wèn)控制權(quán)限
public function get_access_rule()
{
$rule_action['rule_type'] = 'white';
$rule_action['actions'][] = 'index';
$rule_action['actions'][] = 'save_comment';
return $rule_action;
}
應(yīng)用啟動(dòng)時(shí)會(huì)檢查action是否在白名單或者黑名單中,從而引導(dǎo)未登陸的用戶(hù)進(jìn)行登陸
// 判斷訪問(wèn)規(guī)則使用白名單還是黑名單, 默認(rèn)使用黑名單
if ($access_rule)
{
// 黑名單, 黑名單中的檢查 'white' 白名單,白名單以外的檢查 (默認(rèn)是黑名單檢查)
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();
}
訪問(wèn)白名單中action的不需要登陸,而黑名單中的action需要登陸用戶(hù)才能調(diào)用。