Jsf 跳过jaas模块的登录页面

Jsf 跳过jaas模块的登录页面,jsf,jaas,Jsf,Jaas,我创建了一个包含两种登录机制的项目: 第一种是第一种身份验证机制,它使用一个简单的登录页面,使用函数findUser从数据库获取用户(如果存在) 第二种身份验证机制是JAAS j_security_check提供的登录机制 基本上,我正在努力实现这个目标:当用户 在第一个登录页面中成功进行身份验证 能够跳过JAAS提供的第二页登录,而无需 在登录表单j_security_chek中重新输入他的用户名和密码 我希望登录页面不会显示,直接跳转到资源页面 我需要一些建议,如果问题不够清楚,请毫不犹豫地

我创建了一个包含两种登录机制的项目:

第一种是第一种身份验证机制,它使用一个简单的登录页面,使用函数findUser从数据库获取用户(如果存在)

第二种身份验证机制是JAAS j_security_check提供的登录机制

基本上,我正在努力实现这个目标:当用户 在第一个登录页面中成功进行身份验证 能够跳过JAAS提供的第二页登录,而无需 在登录表单j_security_chek中重新输入他的用户名和密码 我希望登录页面不会显示,直接跳转到资源页面


我需要一些建议,如果问题不够清楚,请毫不犹豫地通知我,提前感谢您的回复。

我找到了一个临时解决方案,效果非常好。所以很简单,我只是用值填充了j_用户名和j_密码​​从第一个登录机制提交第一个,我所做的是使用javascript accessResource创建了一个函数,在当前页面加载时使用action=j_security_check提交登录表单

jaasLogin.xhtml:


希望这对您有所帮助

理想情况下,您应该使用Servlet 3.0中提供的新JEE编程登录。或者,您可以尝试创建HttpSession,在使用第一种机制成功进行身份验证后,如果用户在后续请求中提供了有效的JSESSION_ID,容器将不会尝试重新身份验证。在引用受保护资源管理/索引的链接中,通常是使jaas调用登录页的链接,我试图通过此链接传递j_用户名和j_密码***post方法,以便可以同时访问资源并提交表单登录。很抱歉,格式不正确,但我没有剩余的空格,因此当我单击链接时,会显示login错误页面,知道登录名和密码是正确的
<h:head>
        <title>Facelet Title</title>
        <script>
            function accessResource(){
                document.forms["loginForm"].submit();
            }
        </script>
    </h:head>
    <h:body class="metro" onload="accessResource()">
.......
.......
<form id="loginForm" name="loginForm" method="post" action="j_security_check" class="form bg-login">
                <div class="container span5" name="container">
                    <h:outputLabel>Utilisateur</h:outputLabel>
                    <div class="input-control text" data-role="input-control">
                        <input type="text" name="j_username" value="#{moduleBean.userBean.username}"/>
                        <h:commandButton type="button" class="btn-clear" tabindex="-1"></h:commandButton>
                    </div>
                    <h:outputLabel>Mot de passe</h:outputLabel>
                    <div class="input-control password" data-role="input-control">
                        <input  type="password" name="j_password" value="#{moduleBean.userBean.password}" />
                        <h:commandButton type="button" class="btn-reveal" tabindex="-1"></h:commandButton>
                    </div>
                    <div class="buttons">
                        <input name="login" type="submit" value="LOGIN" />
                    </div>
                </div>
            </form>