Spring Security有一个带有方法的UserDetailsService
public UserDetails loadUserByUsername(String username)
通常我们需要创建UserDetailsServiceImpl来实现这个接口并提供上述方法的实现。
在我的应用程序中,用户名不会是唯一的。它可以在不同的组织中相同。它对组织来说是独一无二的。所以我需要通过用户名和组织查找用户详细信息。
在这种情况下,上述方法不起作用。我正在尝试创建一个方法,它将采用两个参数,即用户名和组织名称,并获取用户详细信息。
登录表单将包含三个参数用户名,组织名称和密码。具有三个i / p参数的此认证部分正常工作。
但我无法调用自定义方法。
请帮忙。
答案 0 :(得分:0)
我目前可以想到的更简单的选项是将组织与用户名连接起来。并添加一个简单的DB函数,为每个用户插入它。
在你的数据库中你可能有:
| organisation | username | organisation_username | | IBM | Jonny | IBM_Jonny |
所以你可以用以下方法调用你的方法:
myDetailsService.loadUserByUsername("IBM_Jonny");
或者没有对数据库进行任何更改:
myDetailsService.loadUserByUsername(user.getCompany() + "_" + user.getUsername());