要强制用户重新登录,你可以采取以下步骤:
请注意,上述步骤是一种常见的方法,但具体的实现方式可能因你使用的框架或库而有所不同。你可以根据自己的具体情况和需求进行调整和修改。
function checkOfficeAuth() { //1.判断是否已登录; if (empty($_COOKIE["db_office_id"])) { redirect('index.php'); } //2.判断子账号的登录权限变化时,自动退出 By woodCutter 2023-09-10 global $db; dbc(); $user_id = AuthCode($_COOKIE['db_perm_id'], "DECODE", "LOCKDATAV", ""); $row_user = $db->fetch('user', 'user_id,user_perm', array('user_id' => trim($user_id)), ' user_id DESC'); if ($_COOKIE['db_office_perm'] != $row_user["user_perm"]) { redirect('?m=Login&a=loginDeal&act=LoginOut'); } }
检测用户登录状态:(思想):
一式:用户的登陆信息记录在一个表中,用户登陆表增加一行,用户退出,删除那一行
二式:登录标识:登录成功后添加登录标识到数据表中,当执行强制退出就设置为0; 在基类(刷新)中进行检测:session(login_token), db(login_token),
代码:采用第二种:token
// 步骤: // 1. 用户登录后:获取标识: $login_token = uniqid(); // 2. 将标识存入session $_SESSION['admin']['login_token'] = $login_token ; // 3. 数据表中(更新) $model->updateManagerById($login_token, $mid); // 4. 用户登录成功后, // 前端操作:点击按钮,设置登录标识:0 $(function(){ // 点击强制退出 $('.exit').on("click", function () { // 获取manager id var manager_id = $(this).attr("data-id"); var manager_name = $(this).attr("data-name"); var d = $.dialog({ type: 'warning', message: '你确认要强制退出管理员:' + manager_name + ' ?', buttons: [ { text: '确认', type: 'primary', callback: function () { // 执行按manager_id 强制退出 exitManagerById(manager_id); } }, { text: '取消', type: 'cancel', callback: function () { d.close(); return false; } } ] }); }); // 按manager_id 强制退出管理员 function exitManagerById(manager_id) { $.ajax('/manager/exit', { type: 'POST', data: {manager_id: manager_id}, dataType: 'json', success: function (data) { console.log(data); if (data.code == 1) { $.dialog({ type: 'success', delay: 2000, delayShow: 0, message: data.message, delayCallback: function () { location.href = data.data.href } }) } else { $.dialog({ type: 'warning', delay: 2000, delayShow: 0, message: data.message }) } } }) } }); // 5. 后端:思想:用户的每个操作都会调用的类(基类)里添加一个方法,并调用(刷新) // 调用 function __construct(){ // 强制退出 self::checkLoginToken(); } /** * 检测登录标识状态:session 中的login_token是否一致 * 1. 根据manager_id 获取login_token * 2. 根据从数据库查出的login_token 与sessin 中的login_token 进行对比。除超级管理员 */ public function checkLoginToken(){ // 1. 根据manager_id 获取login_token $model = ModelFactory::M('ManagerModel'); $token = $model->getManagerById($_SESSION['admin']['manager_id'])['login_token']; // 2. 根据从数据库查出的login_token 与sessin 中的login_token 进行对比 if($token != $_SESSION['admin']['login_token']){ unset($_SESSION['admin']); header("Location:/manager/login"); } }
注:[dialog] 是一个jquery 框架
到此这篇关于php权限调整强制用户退出的解决方案的文章就介绍到这了,更多相关php强制用户退出内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!