关于 Tomcat j_security_check 的快速问题...
任何人都知道如何在 user_role 表中为 'id' 更改 'user_name',正如我希望的那样 通过匹配 ID 而不是用户名来验证
服务器.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" />
表格
user
id INT PK
user_name PK
user_pass
role
id INT PK
role_name
user_role
user_id FK user_id to user.id
role_id FK role_id to role.id
表格仍然是:
<form method="post" action="j_security_check" name="loginForm">
<j:if test='${not empty param["failed"]}'>
Invalid sign-in credentials<br/>
</j:if>
<h:inputText id="j_username" autocomplete="off" />
<br/>
<h:inputSecret id="j_password" autocomplete="off"/>
<br/>
<h:commandButton type="reset" value="Clear"/>
<h:commandButton type="submit" value="Login"/>
</form>
我有 role_id 可以工作,但是使用 user_id 我只能得到一个
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'user_name' in 'where clause'
异常
提前致谢
KPS
最佳答案
您不能通过 tomcat j_security_check
做到这一点。如果 username
是一个唯一字段,那么删除 id
是更好的解决方案。但是我建议你合并这两个表。您只能存储一个包含以下字段的表:username
、password
和 role
。 (或者您可以向其中添加 id
!)
我想这样你的问题就迎刃而解了!
关于java - Tomcat j_security_check 用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598202/