用于匿名用户的自定义模块AJAX 403

时间:2013-10-09 15:06:16

标签: ajax drupal permissions

我有一个模块,其中包含通过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,
    );

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

不,您不需要为HOOK_MENU中定义的每个路径使用不同的挂钩。使用access arguments,您的代码是正确的。您无需在第二个菜单项中指定access callback

您是否还更新了后端的权限,以便匿名用户可以访问您定义的菜单路径?它在admin/people/permissions下。

答案 1 :(得分:0)

我尝试将access arguments更改为TRUE,但这不起作用。然后我将access arguments更改为array('access SparkerPower app'),这是我之前定义的那个。这很有效,我能够访问匿名用户所需的所有url路径。