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

问题描述 投票:0回答:1

DataSourceRealm 不支持自定义的select user, select role

 sql 查询。我想添加 
enabled(boolean)
 sql 列来启用和禁用用户。子类化和创建 
MuchBetterDataSourceRealm
 实现是唯一的选择吗?

authentication tomcat tomcat9
1个回答
0
投票
检查 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 = ?
    
© www.soinside.com 2019 - 2024. All rights reserved.