8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

React 中的全局会话处理

Jordy Dieltjens 2月前

41 0

在我们的应用程序中,我们正在使用 jquery 向我们的 api 发送请求,现在已经写了很多请求,他们希望我实现会话处理,我已经处理了会话验证......

在我们的应用程序中,我们正在使用 jquery 向我们的 api 发送请求,现在已经编写了许多请求,他们希望我实现会话处理,我已经在 php 中处理了会话验证,并且如果会话已过期,则工作正常。它将响应 403 状态代码并回显会话已过期,现在在我的 react 应用程序中,我需要修改所有 600 多个请求以在前端验证会话,有什么办法可以做到这一点吗?

    $.ajax({url, beforeSend: () => {
      this.setState({load: true, message: "Getting Mappings"});
    }, success: (data) => {
      } catch (e) { alert("Error"); }
      this.setState({load: false});
    }, error: (e) => {
      alert("Failed");
      this.setState({load: false});
    }});

有没有办法在前端全局处理会话验证?

import $ from 'jquery';

$(function() {
  console.log('Document ready and jQuery setup');

  // Global AJAX setup to include credentials with requests
  $.ajaxSetup({
    xhrFields: {
      withCredentials: true
    }
  });

  // Intercept successful AJAX responses
  $(document).ajaxSuccess(function(event, jqXHR, ajaxSettings) {
    console.log('AJAX request succeeded');
    console.log('URL:', ajaxSettings.url);
    console.log('Response:', jqXHR.responseText);

    try {
      const data = jqXHR.responseText;
      if (jqXHR.status === 403 || (typeof data === 'string' && data.includes('session expired'))) {
        console.log('Session expired detected');

        // Clear session cookies to invalidate the session
        document.cookie = 'PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
        document.cookie = 'manager=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';

        // Redirect to the login page (adjust the URL as needed)
        window.location.href = '/';
      }
    } catch (e) {
      console.error("Error handling response:", e);
    }
  });

  // Intercept failed AJAX requests
  $(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) {
    console.error('AJAX request failed');
    console.error('URL:', ajaxSettings.url);
    console.error('Error:', thrownError);

    // Handle specific error cases if needed (e.g., network errors)
  });
});

我的代码有什么错误吗?我已经在我的 React 应用程序的 index.js 中导入了这个文件?

帖子版权声明 1、本帖标题:React 中的全局会话处理
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Jordy Dieltjens在本站《ajax》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 403 Forbidden 通常意味着您没有所需的权限(例如,您是普通用户,但页面需要管理员权限)。我认为您想要的是 401 Unauthorized。除此之外,问题中是否涉及 PHP 方面?

  • @ÁlvaroGonzález 好的,先生,我注意到了,我的 php 代码运行正常。我在 ajax 请求拦截方面遇到了麻烦

返回
作者最近主题: