我有一个模块,其中包含通过AJAX访问不同任务的页面列表
/spower
/spower-geometry
...
。我正在尝试创建一个允许匿名用户访问所有内容的权限。如果我以管理员身份登录,一切都按照预期的方式运行。但是,匿名用户收到403错误。我是否需要为每条路径使用不同的权限挂钩?这就是我到目前为止所做的:
function spower_permission() {
return array(
'access intro page' => array(
'title' => t('Access Intro page'),
'description' => t('Allow anonymous users to access spower intro page'),
),
'access SparkerPower app' => array(
'title' => t('Access full page'),
'description' => t('Allow users to access full spower app'),
),
);
}
function spower_menu() {
$items = array();
$items['spower'] = array(
'title' => t('SparkerPOWER'),
'page callback' => 'spower_form',
'access arguments' => array('access SparkerPower app'),
'description' => t('form for SparkerPOWER. Enter your house information, and learn how solar panels can help you.'),
'type' => MENU_CALLBACK,
);
$items['spower_geometry/%'] = array( //send data from Jquery (map areas)
'title' => 'Ajax callback',
'description' => 'Callback for jQuery area AJAX request.',
'page callback' => 'spower_geometry_callback',
'page arguments' => array(1),
'access arguments' => array('access spower geometry'),
'access callback' => 'user_access',
'type' => MENU_CALLBACK,
);
感谢您的帮助!
答案 0 :(得分:0)
不,您不需要为HOOK_MENU
中定义的每个路径使用不同的挂钩。使用access arguments
,您的代码是正确的。您无需在第二个菜单项中指定access callback
。
您是否还更新了后端的权限,以便匿名用户可以访问您定义的菜单路径?它在admin/people/permissions
下。
答案 1 :(得分:0)
我尝试将access arguments
更改为TRUE
,但这不起作用。然后我将access arguments
更改为array('access SparkerPower app')
,这是我之前定义的那个。这很有效,我能够访问匿名用户所需的所有url路径。