Java 如何从筛选器类获取liferay远程用户

Java 如何从筛选器类获取liferay远程用户,java,liferay,liferay-6,Java,Liferay,Liferay 6,我想从筛选器类访问liferay远程用户ID @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { HttpServletRequest httpServ

我想从筛选器类访问liferay远程用户ID

@Override
public void doFilter(ServletRequest request, 
                     ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {
    try {
        HttpServletRequest httpServletRequest =  (HttpServletRequest) request;
        User user = (User)request.getAttribute(WebKeys.USER);

        System.out.println("User ID :" + user.getUserId());
        System.out.println("User ID :" + httpServletRequest.getRemoteUser());
    } catch (Exception e) {
        e.printStackTrace();
    }
}
输出

User :null
java.lang.NullPointerException

请告诉我如何获取远程用户ID表单
HttpServletRequest

您可以使用
com.liferay.portal.util.PortalUtil.getUser(HttpServletRequest请求)
获取liferay用户

public void doFilter(ServletRequest request, 
            ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
    try {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;   
        User user = PortalUtil.getUser(request);    
        System.out.println("User ID :" + user.getUserId());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

您有一种奇怪的缩进代码的方式。不确定你是否有编辑权限,但即使在发帖后检查你的帖子格式和语言也是一个很好的做法。就像这里一样,用于格式化的混合选项卡和空格导致代码看起来很难阅读。我为您编辑了它。您是否有任何提示,说明为什么
PortalUtil.getUser()
返回null?用户是根据Liferay-/c/portal/login登录的,但在doFilter中,该用户的登录值为null。对不起,我不记得有过类似的问题,我很难看到这一点,因为我不再使用Liferay。应该值得调试您的应用程序,并检查您的
请求
httpServletRequest
对象。也可能是会话超时?也许你应该提出一个新问题,因为Liferay版本可能是一个因素。