Есть ли ошибка в org.apache.catalina.realm.JDBCRealm? - PullRequest
1 голос
/ 31 июля 2009

http://www.docjar.com/html/api/org/apache/catalina/realm/JDBCRealm.java.html

Чтобы использовать этот JDBCRealm, нам нужны две таблицы: user и user_role.

user table - user_id, user_name, user_password
user_role table - user_id, role_id, user_name

Почему user_name требуется в таблице user_role, когда user_id присутствует в качестве внешнего ключа. JDBCRealm мог бы использовать запрос соединения для извлечения ролей или прямой запрос, если он хранит user_id из предыдущего запроса.

1 Ответ

1 голос
/ 31 июля 2009

Вот документация Tomcat 6 для JDBCRealm.

user_id НЕ требуется ни в таблице, ни role_id. users таблица должна иметь столбцы user_name и user_password; Таблица roles должна содержать столбцы user_name и role_name. Таблицы связаны через user_name.

Причина, по которой это делается (строка, а не числовые идентификаторы), заключается в том, что Principal имеет имя как String, а вызов isUserInRole() принимает имя роли также как String.

...