Gibt es einen Fehler in org.apache.catalina.realm.JDBCRealm?
-
06-07-2019 - |
Frage
http: //www.docjar .com / html / api / org / apache / catalina / Realm / JDBCRealm.java.html
Dieses JDBCRealm nutzen zu können, benötigen wir zwei Tabellen, Benutzer und user_role.
user table - user_id, user_name, user_password
user_role table - user_id, role_id, user_name
Warum user_name ist erforderlich in user_role Tabelle, wenn User_id dort als Fremdschlüssel ist. Die JDBCRealm hätte eine Join-Abfrage verwendet, Rolle oder eine direkte Abfrage und zu extrahieren, wenn sie die user_id der vorherige Abfrage gespeichert werden.
Lösung
Hier ist Tomcat 6 Dokumentation JDBCRealm
.
user_id
ist NICHT in beiden Tabellen erforderlich, noch ist role_id
. users
Tabelle sollte user_name
und user_password
Spalten haben; roles
Tabelle sollte user_name
und role_name
Spalten haben. Die Tische sind über user_name
verknüpft.
Der Grund, es auf diese Weise (string eher dann numerische ids) getan ist, weil Principal
Namen als String
und isUserInRole()
hatte auch Anruf entgegennimmt Rollennamen String
.