Bu konuyla ilgili pek çok gönderiye bakıyorum, fakat benim durumumda çalışan bir çözüm bulamadım.HttpSession zaman aşımından sonra yönlendirme
<session-config>
<session-timeout>1</session-timeout>
</session-config>
ve ben kullanıcı giriş sayfasına yönlendirilmesini istiyorsanız : Ben JSF 2.0 ile Java EE 6 kullanıyorum
benim web.xml
yılında
(7.1 AS JBoss üzerinde dağıtılan) Ben oturum otomatik olarak zaman aşımına uğradığında.
ne denedim:
Yaklaşım 1: kullanarak filtre aşağıdaki filtreyi denedi
:
@WebFilter()
public class TimeOutFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
System.out.println("filter called");
final HttpServletRequest req = (HttpServletRequest) request;
final HttpSession session = req.getSession(false);
if (session != null && !session.isNew()) {
chain.doFilter(request, response);
} else {
System.out.println("Has timed out");
req.getRequestDispatcher("/logon.xthml").forward(request, response);
}
}
@Override
public void destroy() {
}
}
denedim web.xml
yılında
<filter-mapping>
<filter-name>TimeOutFilter</filter-name>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
o (konsolundaki "denilen fiter" nin günlüğü) her isteği üzerine çağrılır olarak
<filter-mapping>
<filter-name>TimeOutFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
filtreve
çalışır. Ancak, oturum zaman aşımına uğramadığında çağrılmaz.Yaklaşım 2: HttpSessionLister
Ben HttpSessionListerner
kullanmaya çalıştık. Aşağıdaki imza sahip olarak adlandırılan yöntem:
Belirli bir sayfaya yönlendiremedim. Bir kullanıcıyı yeniden yönlendirmek istediğimde, genellikle FacesContext
'dan NavigationHandler
'u kullanırım ancak bu durumda FacesContext
(FacesContext.getCurrentInstance()
döndürür null
). Bu post numaralı telefona göre, HttpListener kullanıcıyı yönlendiremez çünkü bir isteğin parçası değildir.
Soru
bu sorunu çözmek için en iyi yol nedir? Yukarıda bahsedilen iki yaklaşımdan birini yapmak için ne yapabilirim?
İlgili: http://stackoverflow.com/q/ Web soket şartname linki aşağıda bulunduğundan 4992526/1065197 –
@LuiggiMendoza: İlginç teşekkürler. ViewExpiredException'ı hiç görmemiş olmama rağmen, mümkünse, kullanıcının herhangi bir şeyi tıklamak zorunda kalmadan giriş sayfasına yönlendirmesini istiyorum. – phoenix7360
İstemci tarafında, sunucu tarafındaki 302'yi tetiklemek için bazı yoklama türlerine ihtiyacınız vardır. Bir kalp atışı ... –