我正在使用 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>
对此有任何想法。请建议..!
您需要在数据库中创建两个表。第一个包含username
和password
,第二个包含username
和role
。另一种方法是创建一个包含 username
、 password
和 role
的表。
此外,您还应该将以下 xml 标记添加到您的server.xml
或context.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" />