【发布时间】:2021-09-23 01:48:45
【问题描述】:
当我们在没有 AJAX 和会话超时的情况下调用控制器中的函数时,codeigniter 会将我们重定向到登录页面(例如)。但是如果我们通过 AJAX 调用控制器中的函数,它会返回错误。
所以我们需要总是在控制器的每个功能中手动检查会话?
谢谢
【问题讨论】:
标签: ajax codeigniter-4
当我们在没有 AJAX 和会话超时的情况下调用控制器中的函数时,codeigniter 会将我们重定向到登录页面(例如)。但是如果我们通过 AJAX 调用控制器中的函数,它会返回错误。
所以我们需要总是在控制器的每个功能中手动检查会话?
谢谢
【问题讨论】:
标签: ajax codeigniter-4
这正是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');
}
}
【讨论】: