【问题标题】:Session timeout during call AJAX in codeigniter 4在codeigniter 4中调用AJAX期间的会话超时
【发布时间】:2021-09-23 01:48:45
【问题描述】:

当我们在没有 AJAX 和会话超时的情况下调用控制器中的函数时,codeigniter 会将我们重定向到登录页面(例如)。但是如果我们通过 AJAX 调用控制器中的函数,它会返回错误。

所以我们需要总是在控制器的每个功能中手动检查会话?

谢谢

【问题讨论】:

    标签: ajax codeigniter-4


    【解决方案1】:

    这正是Filters 的用途。创建一个过滤器来检查您需要的授权,并将该过滤器应用于所需的 URI。

    您甚至可以查看请求是否为 AJAX 以便返回特定代码;在您的 Javascript 中,您的 AJAX 请求可以专门查找该代码,然后在必要时重定向到该登录页面。

      public function before(RequestInterface $request, $arguments = null){
        //However you check for your auth
        if (empty(session()->get('auth')) || session()->get('auth') == FALSE)
        {
          //However you would destroy your session
          session()->destroy();
          //Check if the request is in fact an AJAX call
          return $request->isAjax() ? 
            //Yes, return a special code that the AJAX call is looking for 
            Services::response()->setStatusCode(401) :
            //Else redirect to whatever named route your login page uses
            redirect()->route('login');  
        }
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-23
      • 2015-03-10
      • 2012-12-15
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      相关资源
      最近更新 更多