Есть ли ошибка в org.apache.catalina.realm.JDBCRealm?

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 ответ

Решение

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

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

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

Другие вопросы по тегам