浏览器上的Drupal 6按用户角色自动注销

时间:2014-08-20 09:56:39

标签: session drupal-6 logout

浏览器关闭时是否有任何模块或可能自动注销按角色过滤的用户?

我发现的唯一一件事是ini_set(' session.cookie_lifetime',0);在settings.php中,但这没有用,因为它适用于所有用户。

1 个答案:

答案 0 :(得分:0)

您可以调用windows beforeunload事件,并对用户/注销进行ajax调用,这将注销用户。

要添加角色测试元素,您可以复制user / logout页面回调函数并添加自己的user_logout页面回调函数版本来检查角色。例如" user_logout_by_role"

在自定义模块中,添加hook_menu

/**
 * Implements hook_menu().
 */
function mymodule_menu() {

  $items['user/logout_by_role'] = array(
    'title' => 'Log out',
    'access callback' => 'user_is_logged_in',
    'page callback' => 'mymodule_user_logout_by_role',
    'weight' => 10,
    'menu_name' => 'user-menu',
    'file' => 'user.pages.inc',
  );


  return $items;
}

然后,复制用户注销功能并添加一些代码来检查角色

function mymodule_user_logout_by_role() {
  global $user;

  if (in_array('editor', $user->roles)) {

    watchdog('user', 'Session closed for %name.', array('%name' => $user->name));

    module_invoke_all('user_logout', $user);

    // Destroy the current session, and reset $user to the anonymous user.
    session_destroy();

  }


  die();
}

以下是beforeunload event的一些其他有用提示。