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

Session 浏览器上的Drupal 6按用户角色关闭自动注销,session,drupal-6,logout,Session,Drupal 6,Logout,是否有任何模块或可能性在浏览器关闭时自动注销按角色筛选的用户 我唯一找到的是ini_集('session.cookie_life',0);在settings.php中,但这没有帮助,因为它适用于所有用户。您可以调用windows beforeunload事件,并对user/logout进行ajax调用,这将注销用户 要添加角色测试元素,可以复制user/logout页面回调函数,并添加自己版本的user\u logout页面回调函数来检查角色。例如“用户按角色注销” 在自定义模块中,添加钩子菜单

是否有任何模块或可能性在浏览器关闭时自动注销按角色筛选的用户


我唯一找到的是ini_集('session.cookie_life',0);在settings.php中,但这没有帮助,因为它适用于所有用户。

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

要添加角色测试元素,可以复制user/logout页面回调函数,并添加自己版本的user\u logout页面回调函数来检查角色。例如“用户按角色注销”

在自定义模块中,添加钩子菜单

/**
 * 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();
}
以下是一些其他有用的提示