如何在springsecurity中配置两个用户系统?

时间:2017-08-20 08:04:29

标签: spring spring-security

在我的网络应用中,我有两个用户系统,一个是管理员,另一个是用户。我使用Multiple HttpSecurity分别为管理员和用户配置安全过滤器链。 首先,当我同时通过登录浏览器中的管理员和用户登录我的Web应用程序时,后者登录UserInfo将覆盖前者。

这是一个很大的错误,当我尝试修复它时,我了解SpringSecurity架构和实现,SpringSecurity使用会话Storing the SecurityContext between requests。因此,当我通过管理员和用户在登录浏览器中登录我的Web应用程序时同一时间,后一个登录userInfo将覆盖以前的登录userInfo。

通过覆盖HttpSessionSecurityContextRepository,我创建了我的SecurityContextRepositoryOneSessionMultiContextRepository。我可以使用它来确定哪个SecurityContext从会话中获取或哪个键用于按当前存储到会话servletPath。

这解决了上面的问题,两个用户系统可以在我的网络应用程序中登录而不会相互影响。但是有一个新问题,当我退出一个,另一个是注销时!我发现SpringSecurity在注销时无效会话,导致这个问题。

如果我想要解决此问题,我必须禁止SessionFixationProtectionStrategy并且在注销时永远不会无效会话。我不想这样做,因为禁止SessionFixationProtectionStrategy并且当注销会降低安全性时永远无效会话

我如何解决这个问题?我的目的是让管理员和用户可以同时登录我的网络应用程序,而不会相互影响。

我不明白为什么SpringSecurity不会为这种情况提供支持,我认为这种情况很熟悉。

我不知道我应该把这些代码放在这里,因为它们太长了,如果需要我的代码,请告诉我。

我的英语不是很好。请原谅我。

0 个答案:

没有答案