基于表单的JAAS - 使用相同的登录表单显式记录用户

时间:2014-01-29 20:54:10

标签: java jsp servlets login jaas

使用基于表单的JAAS,MySQL,Apache TomEE,JSP,Servlets

我知道如何配置基于表单的JAAS,以便在用户尝试访问安全页面时自动将用户重定向到登录页面。基本上,我已经为TomEE和MySQL配置了JDBC Realm(在server.xml文件中),web.xml我已经声明了<security-constraint>s<security-role>s<login-config>

然后,有以下登录表单:

<form id="loginForm" action="j_security_check" method="post">
        <h3>Login:</h3>
        <p>
            <label for="name">Username</label> <input name="j_username"
                id="username" type="text" required/>
            <!-- required -->
        </p>
        <p>
            <label for="password">Password</label> <input name="j_password"
                id="password" type="text" required/>
            <!-- required -->
        </p>

        <p>
            <input type="submit" value="Submit" />
        </p>
    </form>

并且,这适用于在web.xml中在<security-constraint>标记内声明的页面。

但是,我希望能够显式访问用户可以登录的页面。那么,我应该如何实现此登录系统呢?我想使用这个登录页面,我使用的是基于声明形式的JAAS。

我正在考虑将web.xml中的一些jsp或servlet声明为安全的。然后,在网站的某个地方,会有一个链接,其中包含该安全jsp / servlet的URL。因此,当用户点击链接时,他将自动重定向到login页面(基于声明形式的JAAS中的常见行为)。然后,在成功登录后,用户将被重定向到安全的jsp / servlet。

现在,如何让这个安全的jsp / servlet重定向到,让我们说/home servlet?问题是在这种情况下不称为HTTP get / post请求,因此实现servlet doGet / doPost方法没有帮助。

2 个答案:

答案 0 :(得分:0)

  

现在,我怎样才能让这个安全的jsp / servlet重定向到,让我们说   / home servlet?问题是在这种情况下不叫HTTP   获取/发布请求,因此实现servlet doGet / doPost方法不会   帮助

不是重定向到/ home,而是重定向到/ homeredir。然后/ homeredir执行302重定向到/ home。 (或者代替302,通过JavaScript location.replace()来实现。)

答案 1 :(得分:0)

在撰写此问题时,我并不清楚基于表单的安全性是如何工作的。我正在考虑“明确地”使用此登录表单:只需转到此页面,输入登录详细信息并按“提交”按钮。但是,据我所知,使用基于表单的安全性时无法做到这一点。

所以,我已经实现了这个:当用户想要登录时,用户点击页面上某处的登录链接,这是指向安全的用户帐户详细信息jsp页面的链接。