在Liferay过滤器挂钩

时间:2015-06-16 08:40:33

标签: java liferay servlet-filters

我需要在某些页面上添加一个过滤器,用于检查是否设置了某些Session属性。

我想要实现的是:用户尝试直接导航到某个页面。在该页面上,有3个需要SessionVariables的Portlet。这些是由上一页设置的。因此,如果这些变量不可用,则必须重定向到上一页。

所以我想添加一个过滤器钩子,所以该类实现了Filter

public class SampleFilter implements Filter {

    @Override
    public void destroy() {
        /* Destroy method*/
    }

    @Override
    public void doFilter(
            ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {

        /* I need to access the PortletSession here! */

        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void init(FilterConfig filterConfig) {
        /*Method to init filter..*/
    }

}

是否可以检查我使用doFilter()设置的session.setAttribute("name", value, PortletSession.APPLICATION_SCOPE);方法中的变量?

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个:

因为会话属性的范围是" APPLICATION_SCOPE",可以通过HttpSession访问它们:示例

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpSession session = httpServletRequest.getSession();
        log.debug(session.getAttribute("applicationScopedName"));

        filterChain.doFilter(servletRequest, servletResponse);
}

这就是全部!