Bei der Arbeit im Internet müssen wir häufig das Problem des Sitzungsablaufs berücksichtigen. Wenn die Sitzung abläuft, springt die Seite jedoch auf zwei Arten Benutzer fordern den Hintergrund an: Die herkömmliche Methode und die asynchrone Anforderung sind einfacher zu lösen. Die Anforderung wird in den Hintergrund verschoben und der abgelaufene Vorgang wird direkt aktualisiert Der Sitzungsablauf kann nicht auf die übliche Weise gehandhabt werden und erfordert zusätzliche Vorgänge.
Spezifische Idee: Bestimmen Sie, ob es sich um eine Ajax-Anfrage im Interceptor handelt. Wenn es sich um eine Ajax-Anfrage handelt, wird eine Nachricht zurückgegeben. Fügen Sie der Seite ein globales Ajax-Verarbeitungsereignis hinzu, um die Nachricht zu beurteilen Wird gemeldet, dass die Sitzung abgelaufen ist, dann wird der Standort zur Anmeldeseite gehen
Im ersten Schritt ermittelt der Interceptor, ob es sich um eine Ajax-Anfrage handelt:
if(request.getHeader("x-requested-with")!=null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //是ajax请求,则返回个消息给前台 PrintWriter printWriter = response.getWriter(); printWriter.print("{sessionState:timeout}"); printWriter.flush(); printWriter.close(); }else{ //不是ajax请求,则直接跳转页面 }
Der zweite Schritt besteht darin, ein globales Ajax-Verarbeitungsereignis einzurichten, das den Sitzungsablauf verwaltet, ähnlich einem Interceptor oder Filter:
$.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=utf-8", cache:false , complete:function(data,TS){ //对返回的数据data做判断, //session过期的话,就location到一个页面 } } });
Dies ist ein asynchroner Verarbeitungsmechanismus, der auf jQuery basiert. Ich habe den Code, den ich beim letzten Mal geschrieben habe, nicht mitgebracht. Ein Teil des Codes im Artikel wurde online gefunden und eingefügt Es ist schon eine halbe Stunde am Morgen und ich bin zu müde. Ich habe gerade meine Gedanken aufgezeichnet.
PS: Globale Überwachung des Ajax-Betriebs, Ungültigmachung der Benutzersitzung
jQuery(function ($) { // 备份jquery的ajax方法 var _ajax = $.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { try { if (data.sessionstatus == false) { //用户失效进行操作 //return; } } catch (e) { } _success(data, textStatus); } }); _ajax(_opt); }; });
Weitere globale jQuery-Ajax-Funktionen zur Behandlung von Ajax-Sprungproblemen nach Sitzungsablauf finden Sie hier zu verwandten Artikeln PHP chinesische Website!