Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.apache.catalina.realm.JDBCRealm中是否存在bug?_Java_Authentication_Tomcat_Jdbcrealm - Fatal编程技术网

Java org.apache.catalina.realm.JDBCRealm中是否存在bug?

Java 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,也不需要角

要使用这个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
,也不需要
角色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不是规范化结构,因为用户可以有多个角色