在Spring Security中使用多个参数自定义UserDetialsService

时间:2011-08-23 07:28:57

标签: spring-security customization

Spring Security有一个带有方法的UserDetailsS​​ervice

public UserDetails loadUserByUsername(String username)

通常我们需要创建UserDetailsS​​erviceImpl来实现这个接口并提供上述方法的实现。

在我的应用程序中,用户名不会是唯一的。它可以在不同的组织中相同。它对组织来说是独一无二的。所以我需要通过用户名和组织查找用户详细信息。

在这种情况下,上述方法不起作用。我正在尝试创建一个方法,它将采用两个参数,即用户名和组织名称,并获取用户详细信息。

登录表单将包含三个参数用户名,组织名称和密码。具有三个i / p参数的此认证部分正常工作。

但我无法调用自定义方法。

请帮忙。

1 个答案:

答案 0 :(得分:0)

我目前可以想到的更简单的选项是将组织与用户名连接起来。并添加一个简单的DB函数,为每个用户插入它。

在你的数据库中你可能有:

| organisation | username | organisation_username |

|     IBM      |   Jonny  |      IBM_Jonny        |

所以你可以用以下方法调用你的方法:

myDetailsService.loadUserByUsername("IBM_Jonny");

或者没有对数据库进行任何更改:

myDetailsService.loadUserByUsername(user.getCompany() + "_" + user.getUsername());