【问题标题】:Is there a bug in org.apache.catalina.realm.JDBCRealm?org.apache.catalina.realm.JDBCRealm 中是否有错误?
【发布时间】:2009-07-31 06:53:05
【问题描述】:

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_id 作为外键存在时,为什么 user_role 表中需要 user_name。 JDBCRealm 可以使用连接查询来提取角色或直接查询,如果它存储来自先前查询的 user_id。

【问题讨论】:

    标签: java authentication tomcat jdbcrealm


    【解决方案1】:

    这里是Tomcat 6 documentation 代表JDBCRealm

    user_id 在任一表中都不是必需的,role_id 也不是。 users 表应该有 user_nameuser_password 列; roles 表应该有 user_namerole_name 列。表格通过user_name 链接。

    这样做的原因(字符串而不是数字 id)是因为 Principal 的名称是 StringisUserInRole() 调用也将角色名称作为 String

    【讨论】:

    • 您甚至可以只为用户/角色使用一张表。创建表用户 {username varchar(64),password varchar(64),role varchar(64), UNIQUE KEY uname_key(username));工作正常。
    • nos 不是标准化结构,因为用户可以拥有多个角色
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多