C'è un bug in org.apache.catalina.realm.JDBCRealm?
-
06-07-2019 - |
Domanda
http: //www.docjar .com / html / api / org / apache / Catalina / regno / JDBCRealm.java.html
Per usare questo JDBCRealm abbiamo bisogno di due tabelle, user e user_role.
user table - user_id, user_name, user_password
user_role table - user_id, role_id, user_name
Perché user_name è richiesto nella tabella user_role quando user_id è presente come chiave esterna. JDBCRealm avrebbe potuto utilizzare una query di join per estrarre ruoli o una query diretta anche se memorizza l'id_utente dalla query precedente.
Soluzione
Ecco Documentazione Tomcat 6 per
user_id
NON è richiesto in nessuna delle tabelle, né role_id
. La tabella utenti
dovrebbe contenere le colonne nome_utente
e password_utente
; La tabella ruoli
deve contenere colonne nome_utente
e ruolo_codice
. Le tabelle sono collegate tramite user_name
.
Il motivo per cui è stato fatto in questo modo (stringa anziché ID numerici) è perché Principal
aveva il nome come String
e isUserInRole ()
call accetta anche il nome del ruolo come String
.