浏览器关闭时是否有任何模块或可能自动注销按角色过滤的用户?
我发现的唯一一件事是ini_set(' session.cookie_lifetime',0);在settings.php中,但这没有用,因为它适用于所有用户。
答案 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的一些其他有用提示。