繁体   English   中英

带有用户名和 ID 的 Spring Security RememberMe 功能

[英]Spring Security RememberMe function with username and id

我有一个 Spring Boot 应用程序和由 Spring 安全处理的登录。 我已将 remeberme() 功能添加到 HttpSecurity

http.<...>.rememberMe().rememberMeParameter(REMEMBER_ME_PARAM).rememberMeCookieName(REMEMBER_ME_NAME).key(KEY_NAME).userDetailsService(userDetailsService);

并将复选框添加到登录表单。 我的用户通过他们的电子邮件作为用户名登录并属于一个特殊组。 这适用于只属于一个组的普通用户。

但是我有属于多个组的用户,其电子邮件与用户名相同(他们登录时会选择一个组)。

这个用户有几个数据库条目,每个用户都有一个 ID 但相同的电子邮件。 因此,我没有可在 RemeberMe Cookie 中使用的“唯一”用户名,因此当我使用该用户的记住我功能时,它会引发 500 异常。

例如,是否有可能将 remeberme cookie 扩展为也使用用户 ID? 这样我就可以获取cookie的电子邮件和ID并在数据库中搜索它?

我认为你应该改变方法。 在这里使用另一种方法 PersistentTokenBasedRememberMeServices

问题是我们有一个人实际上有两个用户名相同的用户。 例如数据库中的两个用户,都使用用户名/电子邮件 test@test.de

第一个用户的 ID 为 1,属于 Foo 组,第二个用户的 ID 为 2,属于组 Bar。 虽然相同的用户名所有用户可以有不同的名称,密码,....

然后该人使用 test@test.de 登录并获得一个选择选项,以选择他是要登录 Foo 组还是 Bar 组。

记住我功能现在只记住 cookie 中的用户名,所以我不能指定一个明确的用户。 由于用户也可以有不同的密码,我也不能使用登录的组选择。

据我所知 PersistentTokenBasedRememberMeServices 是否也只是使用用户名来识别用户?! 所以我需要有可能向保存/记住的用户添加第二个唯一字段(用户或组 ID)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM