Tomcat + DataSourceRealm和自定义SQL查询(禁用用户标志)?

dtcbnfnu  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(92)

DataSourceRealm不支持自定义的select user, select role sql查询。我想添加enabled(boolean) sql列来启用和禁用用户。它是子类化和创建MuchBetterDataSourceRealm实现的唯一选项吗?

idv4meu8

idv4meu81#

检查DataSourceRealm类中的startInternal方法(在底部)。https://github.com/apache/tomcat/blob/main/java/org/apache/catalina/realm/DataSourceRealm.java
在这里,您可以看到SQL是如何创建的。
像这样配置领域

<Realm className="org.apache.catalina.realm.DataSourceRealm"
       dataSourceName="jdbc/myDatabase"
       userTable="usertable u"
       userNameCol="u.enabled = TRUE AND u.username"
       userCredCol="u.password"
       userRoleTable="roletable r JOIN usertable u ON r.username = u.username"
       roleNameCol="r.rolename">
</Realm>

字符串
在以下语句中的结果

SELECT
r.rolename
FROM
roletable r JOIN usertable u ON r.username = u.username
WHERE
u.enabled = TRUE AND u.username
= ?

SELECT
u.password
FROM
usertable u
WHERE
u.enabled = TRUE AND u.username
= ?

相关问题