0

Tomcat j_security_check についての簡単な質問...

ユーザー名よりもIDを照合して検証したいので、user_roleテーブルの「id」の「user_name」を変更する方法を知っている人は誰でも

サーバー.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

4

1 に答える 1

0

でそれを行うことはできませんtomcat j_security_checkusernameが一意のフィールドである場合は、 を削除することをお勧めしidます。ただし、これら 2 つのテーブルをマージすることをお勧めします。次のフィールドを持つ 1 つのテーブルのみを格納できます: usernamepasswordおよびrole。(または追加idすることもできます!)

このようにして、あなたの問題は解決されると思います!

于 2013-03-30T19:50:28.163 に答える