【问题标题】:Custom UserDetialsService with multiple parameters in Spring SecuritySpring Security中具有多个参数的自定义UserDetialsService
【发布时间】:2011-08-23 07:28:57
【问题描述】:

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

public UserDetails loadUserByUsername(String username)

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

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

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

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

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

请帮忙。

【问题讨论】:

    标签: spring-security customization


    【解决方案1】:

    我目前能想到的更简单的选项是将组织与用户名连接。并添加一个简单的 DB 函数,在插入时为每个用户执行此操作。

    在您的数据库中,您可能有:

    |组织 |用户名 |组织用户名 | | IBM |强尼 | IBM_强尼 |

    所以你会用类似这样的方式调用你的方法:

    myDetailsService.loadUserByUsername("IBM_Jonny");
    

    或者对数据库不做任何改动:

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

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 2017-05-03
      • 2015-11-12
      • 2018-07-05
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多