j_security_check如何验证用户?我想删除默认值并保留它以进行 ldap 身份验证



我正在使用 jetty 在我的 Web 应用程序中使用 j_security_check。以下是我jsp文件中的表格。

<form action="/j_security_check" method="post">
    <table>
        <tr>Username:<input type="text" name="j_username"/></tr>
    <tr>Password:<input type="password" name="j_password"/></tr>
        <tr><input type="submit" value="Login"/></tr>
    </table>
</form>

实际上,我正在尝试从LDAP服务器对用户进行身份验证。但是第一次,当我尝试进行身份验证时,它是直接登录的。之后,当我尝试使用这些凭据访问时,它会直接登录。

我不确定j_security_check每次尝试进行身份验证或验证时将用户名和密码保存在何处。这方面的任何想法。

以下是我保留的用于基于表单的身份验证以供参考的web.xml代码。

形式

    <!-- Note, this needs to match whats in the AdminWebAppLauncher -->
    <realm-name>myRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.html</form-login-page>
        <form-error-page>/loginError.html</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <role-name>admin</role-name>
</security-role>

对此有任何想法。请建议..!

您需要在数据库中创建两个表。第一个包含usernamepassword,第二个包含usernamerole。另一种方法是创建一个包含 usernamepasswordrole 的表。

此外,您还应该将以下 xml 标记添加到您的server.xmlcontext.xml中:

<Realm  className="org.apache.catalina.realm.JDBCRealm"
        driverName="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost/test"
        connectionName="root" connectionPassword="password"
        userTable="user" userNameCol="user_name" userCredCol="user_pass"
        userRoleTable="user_role_link" roleNameCol="role_id" />

最新更新