Java org.apache.catalina.realm.JDBCRealm中是否存在bug?
要使用这个JDBCRealm,我们需要两个表,user和user\u roleJava org.apache.catalina.realm.JDBCRealm中是否存在bug?,java,authentication,tomcat,jdbcrealm,Java,Authentication,Tomcat,Jdbcrealm,要使用这个JDBCRealm,我们需要两个表,user和user\u role user table - user_id, user_name, user_password user_role table - user_id, role_id, user_name 当用户id作为外键存在时,为什么在用户角色表中需要用户名。JDBCRealm可以使用联接查询来提取角色,如果它存储了来自上一个查询的用户id,则也可以使用直接查询。以下是关于JDBCRealm的 两个表中都不需要用户id,也不需要角
user table - user_id, user_name, user_password
user_role table - user_id, role_id, user_name
当用户id作为外键存在时,为什么在用户角色表中需要用户名。JDBCRealm可以使用联接查询来提取角色,如果它存储了来自上一个查询的用户id,则也可以使用直接查询。以下是关于JDBCRealm
的
两个表中都不需要用户id
,也不需要角色id
<代码>用户表应具有用户名
和用户密码
列<代码>角色表应具有用户名
和角色名
列。表格通过user\u name
链接
这样做的原因(字符串而不是数字ID)是因为Principal
的名称为string
,而isUserInRole()
调用的角色名称也为string
。以下是JDBCRealm
两个表中都不需要用户id
,也不需要角色id
<代码>用户表应具有用户名
和用户密码
列<代码>角色表应具有用户名
和角色名
列。表格通过user\u name
链接
这样做的原因(字符串而不是数字ID)是因为
Principal
的名称是string
,而isUserInRole()
调用的角色名称也是string
。您甚至可以为用户/角色使用一个表。创建表用户{username varchar(64)、password varchar(64)、role varchar(64)、UNIQUE KEY uname_KEY(username));工作正常。这不是一个规范化的结构,因为用户可以有多个角色您甚至可以为用户/角色使用一个表。创建表用户{username varchar(64)、password varchar(64)、role varchar(64)、UNIQUE KEY uname_KEY(username));工作正常。nos不是规范化结构,因为用户可以有多个角色