3

标题试图解释这个场景:

此客户具有登录功能,允许用户具有相同名称但位于不同位置(商店)。

在登录页面,用户告知用户名、密码和所需的存储。

使用 Spring Security(使用 JPA)我创建了一个 UserDetailsS​​ervice 实现,但是这个接口总是接收一个用户名(并且存储对于与其他用户不同是必不可少的)。

鉴于这种情况,我有两个问题:

  1. 我如何通知 spring security 附加字段?(店铺)

  2. 如何使用此信息实现 UserDetailsS​​ervice?

这甚至可能吗?我一直在做一些研究,但解决方案尚不清楚。谢谢你们,你们是最棒的=D

4

1 回答 1

1

你的问题对我来说并不完全清楚。您是否有多个商店的唯一登录名?然后,您无需将商店交给您的UserDetailsService实施。我会简单地使用它加载用户信息username,如果用户没有获得所有商店的授权,您可以使用GrantedAuthority来定义用户被授权的位置,例如ROLE_STORE_ID1ROLE_STORE_ID2等。

如果您有多个不共享用户的商店,那么您可以简单地创建一个可配置的自定义实现,为UserDetailsService每个商店实例化一个,并根据用户正在访问的商店使用正确的实例。

我希望这将有所帮助。

于 2013-07-23T19:02:23.403 回答