相关疑难解决方法(0)

在JSF Web应用程序中处理"会话已过期",在JBoss AS 5中运行

这个问题与我的另一个问题" 如何在Java Web应用程序中过期会话时重定向到登录页面? "有关.以下是我正在尝试做的事情:

  1. 我在JBoss AS 5上运行了一个JSF Web应用程序
  2. 当用户处于非活动状态时,例如15分钟,我需要注销用户并将其重定向到登录页面,如果他在会话过期后尝试使用该应用程序.
  3. 因此,正如' JSF Logout and Redirect '中所建议的那样,我已经实现了一个过滤器,它检查会话过期情况,并在会话过期时将用户重定向到session-timed-out.jsp页面.
  4. 我已经在web.xml中的所有其他过滤器定义之上添加了SessionExpiryCheckFilter,因此我的会话到期检查将始终获得第一次命中.

现在面临着我所面临挑战.由于我正在使用JBoss AS,当会话到期时,JBoss会自动将我重定向到登录页面(请注意,不会调用会话到期检查过滤器).因此,在我登录后,我的SessionExpiryCheckFilter拦截了请求,并且它看到会话可用.但是,它抛出异常javax.faces.application.ViewExpiredException: viewId:/mypage.faces - View /mypage.faces could not be restored.

以前有人遇到过这个问题吗?有什么想法可以解决这个问题?

java session jsf servlet-filters viewexpiredexception

18
推荐指数
1
解决办法
4万
查看次数

ViewExpiredException显示在web.xml中的java.lang.Throwable错误页面中

我正在开发一个JSF Web应用程序,如果视图过期,我需要在其中显示"Session Expired"页面,但是所有其他页面都需要一个常规技术错误页面.当我触发异常时,应用程序仅进入技术错误页面.这是错误页面定义:

<error-page> 
    <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
    <location>/jsps/utility/sessionExpired.jsp</location> 
</error-page> 
<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/jsps/utility/technicalError.jsp</location> 
</error-page> 
<error-page>
    <error-code>500</error-code>
    <location>/jsps/utility/technicalError.jsp</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

我删除了technicalError.jsp错误页面元素,它工作正常,但当我把它们放回去时,我无法访问sessionExpired.jsp页面.如何告诉Web容器评估这些标记的顺序,以便出现正确的页面?谢谢.

jsf web.xml servlets custom-error-pages viewexpiredexception

17
推荐指数
1
解决办法
2万
查看次数

JSF 2.0 View Scope后退按钮安全吗?

JSF 2.0 View Scope"后退按钮"安全吗?例如,如果我在View Scope中存储模型并从第1页,第2页,第3页到第4页,沿途修改模型对象(通过输入字段),然后点击后退按钮两次返回页面2并进行更改(再次转到第3页),视图范围中的模型是否仅包含最初呈现第2页时所做的更改,还是后续页面的更改?

Oracle ADF具有/称之为"进程范围"的东西,它通过标记放置到会话中的内容来处理此问题,因此每个页面都有自己的模型副本.

jsf-2

12
推荐指数
1
解决办法
8745
查看次数

如何设置视图超时?

在我们的JBoss 7.1.1上的JSF2项目中,我们定义了一个会话超时web.xml,它工作得很好.

但是,有时候我们会看到视图过期,导致像这样的错误,即使会话仍然存在:

javax.faces.application.ViewExpiredException: viewId:/... - View /... could 
not be restored.
Run Code Online (Sandbox Code Playgroud)

我们在哪里可以设置视图超时,就像我们为会话所做的那样?或者视图是否由其他内容引起?

session timeout view jsf-2

10
推荐指数
1
解决办法
5954
查看次数

HttpSession超时后重定向

我一直在看这个主题的很多帖子,但无法得到一个适用于我的案例的解决方案.

我正在使用带有JSF 2.0的Java EE 6(部署在JBoss AS 7.1上)

在我的web.xml身上:

    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>
Run Code Online (Sandbox Code Playgroud)

当会话自动超时时,我希望将用户重定向到登录页面.

我试过的:

方法1:使用过滤器

我试过以下过滤器:

@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);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java jsf timeout java-ee

10
推荐指数
1
解决办法
3万
查看次数

ViewExpiredException:找不到保存的视图状态:在JSF中提交表单时

我在尝试提交表单时遇到以下异常.

javax.faces.application.ViewExpiredException: /page1.xhtml No saved view state could be found for the view identifier: /page1.xhtml
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:94)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at …
Run Code Online (Sandbox Code Playgroud)

primefaces jsf-2 viewexpiredexception view-scope notserializableexception

9
推荐指数
1
解决办法
2万
查看次数

检查会话是否存在JSF

我有一个登录页面,我有一个User bean来验证一个人的用户名和密码.这个Bean是Session Scoped.如果有人写了一个URL并尝试跳转登录页面,我该如何检查并将其重定向到登录页面?

另一方面.假设我已经登录并且我正在工作,突然我出去了一段时间,我的会话到期了.当我返回并尝试与表单交互时,它会发送一条消息,提醒我会话到期.发生这种情况时,如何再次重定向到登录表单?

提前致谢.希望我解释一下自己.

Mojarra 2.1.4,Tomcat 7,Tomahawk 1.1.11

session jsf jsf-2 viewexpiredexception

8
推荐指数
1
解决办法
2万
查看次数

在群集环境中获取ViewExpiredException,同时将状态保存方法设置为客户端并且用户会话有效

我有一个使用Mojarra 2.2.9的JSF应用程序,并在WebSphere 8.5.5.4上部署在集群环境中并javax.faces.STATE_SAVING_METHOD设置为client.

即使我的所有应用程序bean都是请求作用域,有时候当用户会话有效并且用户在他获得的页面上进行发布请求时ViewExpiredException.可能导致此问题的原因以及如何解决?将改变javax.faces.STATE_SAVING_METHODserver解决呢?如果是这样,这对内存有什么影响?

此外,这是否与集群环境有关,也许Websphere上有一些缺少配置可以解决问题?

websphere jsf viewexpiredexception websphere-8 jsf-2.2

8
推荐指数
1
解决办法
6993
查看次数

无法恢复查看/page.jsf

我有一个我无法解决的问题.当我在页面空闲后刷新打开的JSF页面例如10分钟时,我收到以下错误消息:

serverError: class javax.faces.application.ViewExpiredException viewId:/page.jsf - View /page.jsf could not be restored.
Run Code Online (Sandbox Code Playgroud)

我怎样才能增加JSF查看时间?

jsf session-timeout jsf-2

7
推荐指数
1
解决办法
1万
查看次数

identity.logout()之后的ViewExpiredException; 在JBoss Seam

在我AuthenticationFilter重定向到登录页面后,我想退出给用户.

这就是为什么,我把identity.logout();我的预渲染方法checkPermission(...)login.xhtml.

但是,我得到ViewExpiredException了用户再次登录的时间.

我的问题是

1:如果我不这样做identity.logout();,用户再次重新登录,因为旧的用户会话仍然存在. 2:如果我这样做identity.logout();,我会ViewExpiredException在用户再次登录时获得.

AuthenticationFilter.java

public class AuthenticationFilter implements Filter  {
    .....

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        HttpSession session = httpRequest.getSession();
        User user = (User) session.getAttribute(Constants.LOGIN_USER);
        if (user == null) {
            session.setAttribute(Constants.MESSAGE_ID, MessageId.REQUIRED_TO_LOGIN);
            String loginView = httpRequest.getContextPath() + Constants.LOGIN_PAGE;
            httpResponse.sendRedirect(loginView);
        } else if …
Run Code Online (Sandbox Code Playgroud)

java jsf seam

7
推荐指数
1
解决办法
1274
查看次数