【问题标题】:Confusion in form based authentication in javajava中基于表单的身份验证的混淆
【发布时间】:2011-01-22 16:26:11
【问题描述】:

谁能告诉我,如何在 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 将如何做到这一点?

【问题讨论】:

  • 这通常已经由您正在运行的 servletcontainer 管理。要更详细地回答如何配置/使用它,您需要说明您使用的是哪一个。

标签: java authentication servlets forms-authentication


【解决方案1】:

这个想法是您编写一个 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

【讨论】:

    【解决方案2】:

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

    看到这个 -
    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

    【讨论】:

    • 如果不需要映射,那么在HTML表单的action字段中需要定义“j_security_check”吗?
    • @Stardust - 不需要映射,因为 servlet 容器正在提供它。您需要在表单中使用 j_security_check 以符合现有映射。
    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 2022-08-13
    • 2014-12-13
    • 2016-05-25
    • 2012-12-14
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多