我必须实现一个弹簧安全件,它有超过1个参数来获取用户。它将通过其ID和产品名称获取用户。我知道user-by-username-query只能给出一个参数,我想知道是否有可能给出许多用户 - 用户名 - 查询选项并给他们一些ID,但我不知道如何在验证时会引用。有没有人有任何建议
<sec:authentication-provider>
<sec:jdbc-user-service data-source-ref="dataSource"
users-by-username-query="
select username,password,enabled
from MY_USERS where username=? and product='productA'" />
答案 0 :(得分:2)
您需要实施自己的AuthenticationProvider
您不能重用DaoAuthenticationProvider(jdbc-user-service),因为它使用了
UserDetailsService,这有一个只根据一个字符串参数加载UserDetails的方法UserDetails loadUserByUsername(String username)