我正在开发一个Drupal项目,其中使用自定义模块将用户重定向到另一个域进行身份验证,如果用户未登录,我希望将/ user页面重定向到此外部身份验证服务器。我这样做了吗?
答案 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.module和http_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']);
}
}