基于表单的身份验证在Java中的混乱

时间:2010-03-02 10:57:22

标签: java authentication servlets forms-authentication

有人可以告诉我,如何处理java中基于表单的身份验证中的 j_security_check servlet?

我是否必须在web-xml文件中使用 j_security_check 名称映射servlet类,如:

<servlet>
<servlet-name>Anyname</servlet-name>
<servlet-class>Anyclass</servlet-name>
</servlet>

<servlet-mapping>
<servlet-name>Anyname</servlet-name>
<url-pattern>/j_security_check</url-pattern>
</servlet-mapping> 

如果我输入用户名和密码,然后点击提交,那么带有 j_security_check 名称的servlet将如何处理这些信息?该servlet将如何验证那些输入的用户名和密码,并获取资源(如果是身份验证),然后授权成功,否则将出现错误页面。 j_security_check servlet将如何做到这一点?

2 个答案:

答案 0 :(得分:5)

我们的想法是编写一个JSP或Servlet,它提供一个包含以下字段和操作的表单:

<form action="j_security_check" method="post">
    <input type="text" name="j_username"/>
    <input type="password" name="j_password"/>
    <input type="submit"/>
</form>

提交表单时,servlet容器使用您定义的机制(例如JAAS)检查您的凭据。在您的web.xml中,设置以下内容:

<login-config>
    <form-login-check>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/error.jsp</form-error-page>
    </form-login-check>
</login-config>

这允许容器找到包含表单的JSP或Servlet,或者您的错误处理代码。如果您还没有,我建议您阅读Servlet Specification

答案 1 :(得分:1)

您无需将j_security_check映射到任何内容。这由Application Server管理。
但是,您需要添加用户名。角色和领域信息。
每个应用程序服务器都有自己的方法来验证这些信息。

看到这个 -
1)http://www.student.nada.kth.se/~d95-cro/j2eetutorial14/doc/Security5.html#wp303355
2)http://docs.sun.com/app/docs/doc/819-3669/bncby?a=view