IonAuth - 似乎随机将我注销

2023-11-25

我正在使用 ionAuth & 它似乎几乎随机地将我注销?我正在使用 Codeigniter v2.1.4 - 它登录得很好,但是 ionAuth 似乎会随机注销,有没有办法强制会话保持活动状态,直到我调用 ionAuth->logout 函数?

我的 CI 配置如下所示:

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 600;

我的 ion_auth 配置文件如下所示:

 $config['user_expire'] = 0;
 $config['user_extend_on_login'] = FALSE;

任何人都可以给我任何可能导致问题的原因吗?


问题的原因是执行 AJAX 调用时会话 cookie 轮换,CodeIgniter 3 中包含正确的修复方法

您有四个选择:

Cope:我自己以前也遇到过这个问题,但不知道其确切原因。简而言之,我保存了每个 XMLHttpRequest 的 Promise,如果遇到 HTTP 状态代码 401,客户端应用程序将以弹出窗口的形式请求凭据,然后重试 AJAX Promise。

使用 jQuery 的客户端,只需添加以下 ajaxError 处理程序:

$(document).ajaxError(function (e, xhr, settings, exception) {
    if (xhr.status == 401)
    {
        // open your popup
        $('#login-popup').modal('open');

        // attach the xhr object to the listener
        $(document).bind( "retry-xhr", {
                xhro: xhr
            },
            function( event ) {
            // retry the xhr when fired
            $.ajax( event.data.xhro );
        });
    }
});

当您重新登录时,只需调用此命令即可重试您的请求:

$(document).trigger('retry-xhr');

服务器端,你只需要在你的构造函数中添加一个if

if (!$this->session->userdata('logged_in') && $this->input->is_ajax_request())
        {
            $this->output->set_status_header('401');
            exit;
        }

这很有用,因为有些用户会让他们的 Web 应用程序窗口整夜打开,会话超时就会开始。然后用户会打电话给我,说无法执行任何 AJAX 功能,我必须告诉他们按 F5

附注如果在 Angular 上,我已成功使用 HTTP 身份验证拦截器模块

Hack:请参阅这篇文章,他的解决方案是在 ci_session 表中创建另一个字段并检查两个 cookie,因此您的会话在轮换后仍然有效。

它还详细解释了导致此故障的原因

http://www.hiretheworld.com/blog/tech-blog/codeigniter-session-race-conditions

Upgrade:开始使用已修复的下一个版本:

https://github.com/EllisLab/CodeIgniter/tree/release/3.0

Patch替换 system/libraries/Session.php 中的第 346 行(函数 sess_update())

if (($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now)

With:

if (($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now || $this->CI->input->is_ajax_request())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IonAuth - 似乎随机将我注销 的相关文章

  • 使用自己的 Web 应用程序 API - 使用 OAuth2 进行身份验证过程

    Overview 我目前正在为图像共享应用程序创建 API 该应用程序将在网络上运行 将来在移动设备上运行 我了解 API 构建的逻辑部分 但我仍然在努力满足我自己对身份验证部分的要求 因此 我的 API 必须可供全世界访问 具有访客访问权
  • Django 自定义 UserManager 中的 self.model()

    所以 我对 Django 还很陌生 尽管我的代码在遵循 Django 文档 在 Django 中自定义身份验证 之后工作 但我不明白他们的示例中的 self model 实际如何工作 它来自哪里以及它如何与 自己 这是在文档底部找到的示例
  • 内部注册 vs. OpenID vs. Google Friend Connect vs. Facebook Connect vs.(等等)

    我正在尝试决定如何允许用户注册我的网站 有 openID clickpass facebook connect googlefriendconnect 等 或者是老式的内部 输入用户名 电子邮件 密码等 简要地看一下如何设置 OpenID
  • 使用 chrome 扩展和 Django 进行身份验证

    对于那些熟悉 django 和 chrome 扩展的人 如何使用 cookie 进行身份验证 以便当您登录 django 制作的网站时 您的 chrome 扩展程序也会登录并激活 谢谢 您的 Chrome 扩展程序 通过 Javascrip
  • 如何通过htaccess在codeigniter中隐藏index.php和控制器名称

    我想从我的 codeignier url 网站隐藏 index php 和控制器名称 我也想替换这个术语 seo test product ad test product 我在下面提到了我的 htaccess 文件 请指导我如何解决这个问题
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • Symfony 5.4 Security Bundle,注册后无法登录

    我在 5 4 版本上构建空的新项目 我使用这些命令来构建项目 composer create project symfony skeleton 5 4 testapp54 cd testapp54 composer require weba
  • 401 Unauthorized("detail":"未提供身份验证凭据。")

    我在后端使用 djoser 的身份验证 当我通过具有内容类型和授权标头的邮递员在 account me 发出获取请求时 我得到了正确的响应 但是当我尝试从我的角度客户端执行相同的请求时 我得到401 Unauthorized detail
  • 多个where条件codeigniter

    如何将此查询转换为活动记录 UPDATE table user SET email email last ip last ip where username username and status status 我尝试将上面的查询转换为 d
  • 如何在 Asp.Net MVC 上实现客户端 Ajax 登录(Asp.Net Webforms 解决方案的链接位于此处)

    我正在尝试在 Asp Net MVC 上实现客户端 ajax 登录 我以前在 WebForms 上设置得很好 但现在我已经转向 MVC 这给我带来了一些麻烦 如果您想要有关 Asp Net Webforms 的客户端 Ajax 登录的教程
  • PHP:从 POP3 或 IMAP 下载传入电子邮件,解析它,并将其标记为服务器上的已读/删除

    我正在尝试将传入电子邮件添加到我的网络应用程序中 它是基于 CodeIgniter 和 PHP 构建的 据我所知 我还没有找到任何 CI 库来执行此操作 我想要做的是有一个控制器通过 POP3 或 IMAP 连接到我的邮箱 并检索消息 解析
  • 使用控制器通过 codeigniter 处理返回的自定义 css 和 javascript 文件

    我正在开发一个 php codeigniter 项目 我正在考虑创建一个专门用于处理返回自定义 css 和 javascript 文件的控制器 在之前的项目中 我在视图文件的标头中包含了外部 CSS 和 JS 文件 但它们本质上必须是静态的
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • 在 Subversion 中,我可以是登录名以外的用户吗?

    我想知道如何获得Subversion更改我的更改显示的名称 我刚刚开始使用Subversion 我目前正在使用它来对 XP 笔记本电脑上的代码进行版本控制 我总是以我妻子的名字登录 我希望 subversion DB 显示我名下的更改 稍后
  • 如何将会话管理添加到简单的 Perl CGI 网页?

    我有一个简单的网页 到目前为止不需要任何登录 它是用 Perl CGI 编程的 我想知道添加会话支持以便获得登录信息的步骤 我不需要非常复杂的方法 因为网页非常简单 另外 我想要一些关于支持 Perl 会话所需的技术 库的建议 我在很多很多
  • 如何将 PHPMailer 与 Codeigniter 3 集成

    嗨 我正在尝试使用PHPMailer 库 https github com PHPMailer PHPMailer来自我的 Codeigniter 应用程序中的 GitHub 我下载了代码并解压到我的application library文
  • 将函数中的会话变量传递给 codeigniter 中的助手

    这就是我正在尝试做的事情 这是控制器中的功能 public function get started if test login this gt session gt all userdata this gt load gt view te

随机推荐

  • 不变性的真正定义?

    我想知道不变性是如何定义的 如果这些值没有公开 因此无法修改 那么这就足够了吗 是否可以在类型内部修改值 而不是由类型的客户修改 或者只能将它们设置在构造函数中 如果是这样 在双重初始化的情况下 使用this结构上的关键字等 对于不可变类型
  • app.js 中的全局变量可在路由中访问吗?

    我如何设置一个变量app js并使其在所有路线上都可用 至少在index js文件位于路径中 使用express框架和node js 实际上 使用 Express 对象上可用的 set 和 get 方法可以很容易地做到这一点 示例如下 假设
  • 如何在 MATLAB 中删除轴

    axis off不工作 function displayResults filename hObject eventdata handles Open filename file for reading fid fopen filename
  • 为什么Java的Arrays.sort方法对不同的类型使用两种不同的排序算法?

    Java 6 的Arrays sort方法对基元数组使用快速排序 对对象数组使用合并排序 我相信大多数时候快速排序比合并排序更快并且消耗更少的内存 我的实验支持这一点 尽管两种算法都是 O n log n 那么为什么不同的类型使用不同的算法
  • AFNetworking-2 waitUntilFinished 不起作用

    我知道有另一个类似的问题 但它适用于旧版本的 AFNetworking 而且并没有真正回答它 我有以下代码 AFHTTPRequestOperationManager manager AFHTTPRequestOperationManage
  • Google Maps API a.lat 不是函数错误

    我正在创建一个代码 可以通过使用分割作为分隔符来协调 CSV 文件中的数据 并计算两个输入坐标之间的距离 但结果总是显示错误a lat is not a function 我已经在网上浏览了有关此特定错误类型的信息 但似乎找不到正确的解决方
  • C# 中可调整大小的表格布局面板

    我发现 c net 2 0 中的表格布局面板非常原始 我希望允许我的用户调整表格布局面板中的列大小 但没有现成的选项可以执行此操作 有没有办法至少找出光标是否直接位于单元格的任何边框上 如果是 则哪个单元格位于其下方 可能有了这些信息 我们
  • 如何使用应用内自定义键盘的按钮输入文本

    我制作了一个应用程序内自定义键盘 它取代了系统键盘 并在我点击内部时弹出UITextField 这是我的代码 class ViewController UIViewController var myCustomKeyboard UIView
  • 数据表过滤:linq 与过滤器?

    过滤内存对象 数据表 这样做之间有很大的不同吗 var t dt Select id 2 vs var g dt AsEnumerable Where f gt f id ToString 2 我假设DataTable Select需要更多
  • 在 3D 世界中渲染 2D 精灵?

    假设我有精灵的 png 如何在 OpenGL 中渲染 2D 精灵 将图像作为我想要实现的效果的示例 另外 我想在屏幕上覆盖武器 例如底部图像中的步枪 有谁知道我如何实现这两种效果 任何帮助是极大的赞赏 在 3D 术语中 这称为 广告牌 广告
  • 计算太阳位于地平线以下/之上 X 度的时间

    我想知道太阳在地平线以下 之上 X 度的时间是什么时候 例如 我想找到太阳位于地平线以下 19 75 度的时间 我认为这与函数中的最高点有关date sunrise date sunset但我不确定 提前致谢 收集您需要的日期的太阳星历数据
  • 当我运行 Angular 4 应用程序时,哪个文件首先运行该应用程序?

    我正在使用 Angular 4 我有一个问题 当我运行项目并使用 ngserve 时 项目中的哪个文件首先呈现 有很多文件 例如main ts angular cli json app module我不明白当我运行 ngserve 时发生了
  • 从 ElasticSearch 中的数组中删除元素/对象,然后进行匹配查询

    我在尝试从 elasticsearch 中的数组中删除元素 对象时遇到问题 这是索引的映射 example1 mappings doc properties locations type geo point postDate type da
  • 是什么 !! JavaScript 中的(不是 not)运算符?

    我看到一些代码似乎使用了我不认识的运算符 以两个感叹号的形式 如下所示 有人可以告诉我这个操作员是做什么的吗 我看到这个的背景是 this vertical vertical undefined vertical this vertical
  • 分析生产代码

    我正在考虑实现一些在生产服务器上分析代码的东西 并需要一些最佳实践建议 显然 分析所有请求是一个坏主意 因为会增加开销 因此我正在研究一些可以根据请求随机调用分析器的技术 类似于每 10 000 个请求 1 个配置文件 我知道有一种方法可以
  • 列元素上的 CSS 3 动画“变换:缩放”在 Chrome 上不起作用

    我在 Chrome v44 中遇到问题 我尝试使用 transform scale 1 1 放大列项中的图像 但动画不起作用 如果我尝试在 Firefox 上使用 效果很好 我认为问题是由于 chrome 造成的 但我想知道是否有人找到了解
  • 我如何中断正在执行 (*TCPListener) Accept 的 goroutine?

    我最近正在玩 go 并尝试创建一些服务器来响应 tcp 连接上的客户端 我的问题是如何干净地关闭服务器并中断当前在以下调用中 被阻止 的 go 例程 func TCPListener 接受吗 根据接受的文档 Accept实现Listener
  • 使用 Interface Builder 嵌套自定义类/XIB

    我会尽力使其简短 我编写了一个自定义类 它使用几个 IBOutlet 属性扩展 UIView 并且它有一个与之关联的 XIB 这些 IBOutlet 链接到该 XIB 然后我想学习该类 将其嵌入到其他 XIB 例如 表格单元格 中 然后让它
  • Apple 和私有 API

    既然众所周知 App Store 提交正在接受私有 API 的使用测试 我需要问一个问题 私有 API 到底是什么 以便我可以避免使用它们 私有 API 是未记录在 SDK 中的 API 例如 框架类可能声明一个不适合外部开发人员使用的方法
  • IonAuth - 似乎随机将我注销

    我正在使用 ionAuth 它似乎几乎随机地将我注销 我正在使用 Codeigniter v2 1 4 它登录得很好 但是 ionAuth 似乎会随机注销 有没有办法强制会话保持活动状态 直到我调用 ionAuth gt logout 函数