Sql 针对两个用户服务使用Spring security对用户进行身份验证
我对Spring security非常陌生,我的问题如下: 我有一个membermysql表,其中包含有关网站成员的信息,包括他们的用户名、密码和角色。到目前为止还不错:我可以使用这个表来配置Sql 针对两个用户服务使用Spring security对用户进行身份验证,sql,authentication,spring-security,Sql,Authentication,Spring Security,我对Spring security非常陌生,我的问题如下: 我有一个membermysql表,其中包含有关网站成员的信息,包括他们的用户名、密码和角色。到目前为止还不错:我可以使用这个表来配置冲突 多个存储库的问题是,您需要确保区分哪个用户是哪个用户。例如,假设您的数据如下所示 成员表 username ---------------------- member username ---------------------- moderator username value
冲突
多个存储库的问题是,您需要确保区分哪个用户是哪个用户。例如,假设您的数据如下所示
成员表
username
----------------------
member
username
----------------------
moderator
username value
----------------------------------------
moderator secret
username
----------------------
member
moderator
username is_moderator
----------------------
member false
moderator true
主持人表
username
----------------------
member
username
----------------------
moderator
username value
----------------------------------------
moderator secret
username
----------------------
member
moderator
username is_moderator
----------------------
member false
moderator true
然后您就有了一些与您的用户相关联的数据
数据表
username
----------------------
member
username
----------------------
moderator
username value
----------------------------------------
moderator secret
username
----------------------
member
moderator
username is_moderator
----------------------
member false
moderator true
如果发生碰撞,现在会发生什么?例如,用户注册后,您的成员表如下所示:
成员表
username
----------------------
member
username
----------------------
moderator
username value
----------------------------------------
moderator secret
username
----------------------
member
moderator
username is_moderator
----------------------
member false
moderator true
哪个版主拥有这些数据?无法区分这两个用户
替代方法
另一种方法是使用用户到角色的映射。这将是使用类似以下内容:
成员表
username
----------------------
member
username
----------------------
moderator
username value
----------------------------------------
moderator secret
username
----------------------
member
moderator
username is_moderator
----------------------
member false
moderator true
然后,当用户尝试使用现有用户名注册时,存在违反约束的情况,因此不需要区分这两种情况。当然,您可以使用另一个表映射角色。这是SpringSecurity通常使用表所做的
使用多个UserDetailsService
如果确实希望以任何方式使用多个用户存储库,只需在配置中声明多个UserDetailsService条目即可。内存中配置示例如下所示:
<authentication-manager>
<authentication-provider>
<jdbc-user-service .. />
</authentication-provider>
<authentication-provider>
<user-service>
<user username="moderator"
password="password"
authorities="ROLE_MODERATOR"/>
</user-service>
</authentication-provider>
</authentication-manager>
例如查询