如何在转到/ user页面时重定向未登录的用户?

时间:2011-04-21 21:12:15

标签: drupal authentication drupal-6 login

我正在开发一个Drupal项目,其中使用自定义模块将用户重定向到另一个域进行身份验证,如果用户未登录,我希望将/ user页面重定向到此外部身份验证服务器。我这样做了吗?

3 个答案:

答案 0 :(得分:4)

您可以通过使用user_is_anonymous()登录状态,然后使用'user'的第一个查询参数来捕获hook_init中的条件。

<?php
/**
 * Implements hook_init().
 */
function mycustommodule_init() {
  // if 1st argument is user, and they are not logged in, send them away
  if (user_is_anonymous() && arg(0) == 'user') {
    drupal_goto('http://example.com/login');
  }
}

如果您能够使用PHP在幕后进行身份验证,则还可以使用hook_user和“登录”操作使登录无缝。

答案 1 :(得分:1)

我确信您可以使用rules模块和actions以及triggers配置的某种组合。

当用户在页面/用户上并且他们未登录时重定向到x。

答案 2 :(得分:1)

作为实施外部身份验证的模块示例,您可以查看openid.modulehttp_auth_ext.module OpenID使用user_external_load(),可能需要使用user_external_login_register() 外部HTTP身份验证使用hook_init()

function http_auth_ext_init() {
  global $user;
  // Call authentication on any page if it has not been already completed
  if (! $user->uid && ! $_COOKIE['http_auth_ext_complete']) {
    http_auth_ext_login($_SERVER['REMOTE_USER']);
  }
}