JSF ViewExpired与SecurityFilter混合
因此,我已经回顾了与ViewExpiredException相关的答案,并用Ajax请求处理了这些问题,现在我已经很好地处理了这些问题。但是,我有一个配置没有正确获取ViewExpiredException 应用程序有一个SecurityFilter,它监视每个请求并确定url是否需要经过身份验证的用户,然后检查用户是否经过身份验证(在会话中查找用户对象) 问题是过滤器处理的请求在JSF实际确定ViewExpiredException之前,因此我们将它们转发到登录页面,因为它们没有经过身份验证。这是因为会话已过期,并且用户对象不再在会话中 如果我删除了安全过滤器,那么我们会得到ViewExpiredException 我的问题是我应该使用不同的技术来验证授权吗?一个允许JSF处理请求,然后检查授权的程序 我还认为可能只有当它是get而不是post时才检查授权,然后我确实会得到ViewExpiredException,但是如果有人直接使用post,则会在授权中留下一个巨大的漏洞 最大的问题是,我无法在筛选器中确定会话是否超时,或者用户是否键入了他们无权访问的URL。无论它们被重定向到登录页面,结果都是相同的,但是无法确定错误消息 注意:我们使用的是MyFaces、JSF2.2和PrimeFacesJSF ViewExpired与SecurityFilter混合,security,jsf,jsf-2,myfaces,viewexpiredexception,Security,Jsf,Jsf 2,Myfaces,Viewexpiredexception,因此,我已经回顾了与ViewExpiredException相关的答案,并用Ajax请求处理了这些问题,现在我已经很好地处理了这些问题。但是,我有一个配置没有正确获取ViewExpiredException 应用程序有一个SecurityFilter,它监视每个请求并确定url是否需要经过身份验证的用户,然后检查用户是否经过身份验证(在会话中查找用户对象) 问题是过滤器处理的请求在JSF实际确定ViewExpiredException之前,因此我们将它们转发到登录页面,因为它们没有经过身份验证。
非常感谢您的任何建议 如果您使用的是tomcat容器,那么它会为请求维护一个会话,为所需的servlet创建一个线程,然后在该线程中处理该servlet的HttpRequest和HttpResponse对象。现在,每当您在完成任何更改后刷新浏览器页面时,请求将获得会话并呈现页面 现在假设您已经对项目进行了一些配置更改,然后可能会要求您重新启动apache服务器,这反过来会清除tomcat容器创建的所有会话,有时您会遇到ViewStateExpired异常