首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GateIn:登录servlet的过滤器

GateIn:登录servlet的过滤器
EN

Stack Overflow用户
提问于 2012-06-01 22:38:33
回答 5查看 540关注 0票数 0

我需要在login.jsp调用的登录servlet之前和之后实现一些逻辑。

所以我为url /login写了一个过滤器来做这件事。我需要获取一些操作的用户配置文件,所以我创建了这个LoginFilter类:

代码语言:javascript
复制
public class LoginFilter implements Filter {
    private static Logger logger = Logger.getLogger(LoginFilter.class);

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String username = httpRequest.getParameter("username");
        String password = httpRequest.getParameter("password");

        chain.doFilter(request, response);

        PortalRequestContext context = PortalRequestContext.getCurrentInstance();

        if (context == null)
            logger.info("PortalRequestContext is NULL");
        else {
            String userId = context.getRemoteUser();

            if (userId == null || userId.equals(""))
                logger.info("Login failed, IP:" + httpRequest.getRemoteAddr());
            else
                logger.info("Login executed, username:" + userId);
        }
    }

问题是"context“(PortalRequestContext)总是空的。我做错了什么?这是正确的方法吗?

EN

回答 5

Stack Overflow用户

发布于 2012-06-28 16:17:48

如果您使用的是GateIn,可以尝试使用

代码语言:javascript
复制
org.exoplatform.portal.webui.util.Util.getPortalRequestContext().getRequest()

ce

票数 1
EN

Stack Overflow用户

发布于 2013-12-20 16:47:26

您可以开发一个Valve并将其添加到"portal“webapp (Tomcat/conf/Catalina/localhost/portal.xml)的上下文文件中。例如,这就是在单点登录扩展的GateIN中所做的事情:参见ServletAccessValve

代码语言:javascript
复制
ServletAccess.setRequestAndResponse(request, response);

然后,在SSOLoginModule中使用以下命令访问该请求:

代码语言:javascript
复制
// Tomcat way (Assumed that ServletAccessValve has been configured in context.xml)
  else
  {
     request = ServletAccess.getRequest();
  }

对于JBoss,它更简单,您只需使用

代码语言:javascript
复制
javax.security.jacc.PolicyContext.getContext(HttpServletRequest.class.getName())
票数 1
EN

Stack Overflow用户

发布于 2013-01-28 10:19:40

登录时,尚未创建PortalRequestContext,但您可以通过调用HttpServletRequest#getRemoteUser()获取远程用户

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10852309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档