التعامل مع جلسة منتهية الصلاحية في تطبيق الويب القائم على الربيع

أنا أستخدم ميزة أمان الربيع في طلبي ، ولكنني اكتشفت أنه عند انتهاء الجلسة ، يقوم كل طلب ajax بإرجاع صفحة login.jsp (وليس إعادة توجيه ، في استجابة http ، فإنه يضع كل محتوى HTML) وهو صفحة تسجيل الدخول من بلدي webapp. لقد استخدمت الكثير من طلب ajax في تطبيقي ، وكان الهدف هو إرجاع رمز خطأ معين مثل 510 بدلاً من صفحة تسجيل الدخول.

 

بدون عنوان URL صالح للجلسة لقد حاولت جعل invalid-session-url = "" ، لا يعمل. تشكرات

2

1 إجابة

استخدم AuthenticationEntryPoint المخصصة :

package com.example.spring.security
// imports here

public class AjaxAwareAuthenticationEntryPoint
     extends LoginUrlAuthenticationEntryPoint {

  public AjaxAwareAuthenticationEntryPoint(final String loginFormUrl) {
    super(loginFormUrl);
  }

  @Override
  public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException)
      throws IOException, ServletException {

    if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
      response.sendError(403, "Forbidden");
    } else {
      super.commence(request, response, authException);
    }
  }
}

Define a bean and use it as entry-point-ref in element:


  <!-- more configuration here -->



 

4
وأضاف