【问题标题】:Redirect after Realm authentication on Glassfish在 Glassfish 上进行领域身份验证后重定向
【发布时间】:2012-12-26 02:40:18
【问题描述】:

我目前正在 Glassfish 上运行 JPA/EJB/JSF 应用程序,并使用安全 JDBC 领域进行身份验证。该领域运行良好,满足要求,直到客户要求对导航进行小幅更改。

今天,如果您尝试访问受保护的页面,身份验证机制会将您重定向到 web.xml 中指定的登录页面。完美的!身份验证成功后,您将被重定向回您尝试访问的页面。很公平。但是,客户决定,在每次成功的身份验证后,无论他/她之前尝试访问哪个页面,都应该将用户重定向到主页。问题是,我们如何更改领域以便在每次成功验证后重定向到固定页面?

【问题讨论】:

    标签: security jsf-2 java-ee-6 glassfish-3 realm


    【解决方案1】:

    你不能。容器管理的身份验证不允许这种细粒度的配置(这正是存在 Apache ShiroSpring Security 等第 3 方身份验证框架的原因)。

    最好的办法是用programmatic login 替换容器管理的登录。将<form action="j_security_check"> 更改为<h:form>,该<h:form> 提交给这样的JSF 操作方法

    public void login() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext externalContext = context.getExternalContext();
        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
    
        try {
            request.login(username, password);
            externalContext.redirect(homepageURL);
        } catch (ServletException e) {
            context.addMessage(null, new FacesMessage("Unknown login"));
        }
    }
    

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2017-08-19
      • 1970-01-01
      • 2016-02-16
      • 2015-02-10
      • 2016-07-25
      • 2011-04-30
      相关资源
      最近更新 更多