2010-05-04 28 views
5

Tôi đang phát triển một ứng dụng web bằng GXT, Hibernate, mysql vv. Có một trang đăng nhập cho ứng dụng. Thực ra tôi đang gặp sự cố khi đặt trang đăng nhập khi phiên hết hạn. Chúng tôi có thể đặt thời gian chờ trong tệp web.xml nhưng trong trường hợp đó chúng tôi không thể chuyển hướng đến trang đăng nhập. Bạn có thể cho tôi biết cách đạt được điều đó không.GXT: Cách mang trang đăng nhập khi hết hạn

Trả lời

2

Tôi đã sử dụng các khái niệm về ném một ngoại lệ ở phía máy chủ khi phiên sẽ hết hạn và sau đó cố gắng bắt ngoại lệ ở phía khách hàng. Tôi không biết liệu có cách nào tốt hơn để làm điều đó không.

2

Bạn không thể chuyển hướng phía máy chủ vì ứng dụng hoàn toàn là AJAX. Những gì bạn có thể làm là sử dụng lớp Trình đếm GWT và cho mỗi cuộc gọi RPC của bạn, hãy kiểm tra/đặt lại bộ hẹn giờ. Nếu "phiên" hết hạn thì bạn thực hiện chuyển hướng đến trang đăng nhập thông qua mã thông báo Lịch sử. Đây là cách dễ dàng nhất đối với tôi

Một số đọc khác:

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/b9eab8daaa993c83/d0192d356045e061?pli=1

http://gwt-ext.com/forum/viewtopic.php?f=9&t=1682

2

Ở phía máy chủ, bạn có thể kiểm tra xem phiên đã hết hạn chưa và nếu có, hãy ném ngoại lệ tùy chỉnh. Về phía khách hàng, trên mọi cuộc gọi không đồng bộ, bạn thực hiện kiểm tra tình huống đã biết này và phản ứng với nó. Bạn có thể tạo một lớp trừu tượng cho AsyncCallback rằng bạn sẽ phân lớp cho mỗi cuộc gọi RPC GWT:

public abstract class SessionExpiredAwareAsyncCallback<T> implements AsyncCallback<T> { 

    @Override 
    public void onSuccess(T returnObject) { 
     doOnSuccess(returnObject); 
    } 

    @Override 
    public void onFailure(Throwable exception) { 
     if (exception instanceof SessionExpiredException) { 
      goToLoginPage(); 
     } else { 
      doOnFailure(exception); 
     } 
    } 

    public abstract doOnSuccess(T returnObject); 

    public abstract doOnFailure(Throwable exception); 
} 
1

Bạn có thể sử dụng gwteventservice để bắn một sự kiện từ máy chủ cho khách hàng.

Các vấn đề liên quan