- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
也许应该配置 session 过期时间,或者我的代码中有错误?
我的 Controller 代码片段。即使已注销,它也会显示用户名。
@GetMapping("/")
public String getProfilePage(Model model, Authentication authentication) {
if (authentication == null) {
return "redirect:/login";
}
UserDetailsImpl details = (UserDetailsImpl) authentication.getPrincipal();
model.addAttribute("user", details.getUser());
model.addAttribute("greeting", details.getUser().getGreeting());
List<UserDetails> lu = sessionRegistry.getAllPrincipals()
.stream()
.filter(principal -> principal instanceof UserDetails)
.map(UserDetails.class::cast)
.collect(Collectors.toList());
for (UserDetails l: lu){
System.out.println(l.getUsername());
}
return "Profile";
}
一个星期都无法解决这个问题。有一些答案Here但这并没有帮助解决我的问题。
最佳答案
这就是我的 SecurityConfig 类的样子:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Qualifier("dataSource")
@Autowired
private DataSource dataSource;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UserDetailsService userDetailsServiceImpl;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/expired").permitAll()
.antMatchers("/static/**").permitAll()
.antMatchers("/users").hasAnyAuthority("ADMIN")
.anyRequest().permitAll()
.and()
.formLogin().loginPage("/login")
.usernameParameter("login")
.passwordParameter("password")
.failureUrl("/login?error").permitAll()
.defaultSuccessUrl("/")
.and()
.rememberMe()
.rememberMeParameter("remember-me")
.tokenRepository(tokenRepository())
.and()
.logout()
.deleteCookies("remember-me")
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.permitAll();
http.csrf().disable();
http
.sessionManagement()
.maximumSessions(1)
// .maxSessionsPreventsLogin(false)
.sessionRegistry(sessionRegistryImpl());
}
@Bean
public SessionRegistryImpl sessionRegistryImpl() {
return new SessionRegistryImpl();
}
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
@Bean
public PersistentTokenRepository tokenRepository() {
JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
tokenRepository.setDataSource(dataSource);
return tokenRepository;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsServiceImpl).passwordEncoder(passwordEncoder);
}
}
并添加了AppInitializer:
@Configuration
public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.addListener(HttpSessionEventPublisher.class);
}
}
关于java - Spring 安全: Cant get really users logged in using SessionRegistry that shows expired ones,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618032/
我做了以下事情: 登录到我的 spring 应用程序(例如,作为用户“admin”) 停止tomcat 现在我看到 session 被序列化到 sessions.ser 文件中 我重启tomcat s
我有一个完全由 Weblogic 容器保护的 Web 应用程序。现在我必须列出当前登录的用户。我必须为此使用 Spring Security 2.0.4 在 web.xml 中我定义了必要的监听器和过
我使用 spring security3 和 spring mvc3 来构建一个 web 项目。有一个叫index.jsp的页面,会显示登录用户名和在线用户数 此屏幕的顶部。登录系统有两种方式: 从登
使用 @Autovired SessionRegistry sessionRegistry 在我的代码中,我添加了以下配置: http.sessionManagement() .max
我在 Spring Boot 应用程序中使用 Spring Security 来提供用户功能。我花了一些时间寻找问题的答案,但只为使用基于 xml 的配置的人找到了解决方案。 我的设置与此非常相似:h
我似乎找不到如何在 Struts 操作中获取对 Spring Security (V3) SessionRegistry 的引用。 我已经在我的 web.xml 文件中配置了监听器: org
有人可以提供关于如何仅使用 java 配置在 Spring Security 中获取非空 SessionRegistry 对象(没有任何 XML)的真实工作代码片段。 我正在使用 Spring Sec
在我写的http标签内: 我有以下 sas bean 在代码中我从注册表获取信息: @Autowired private SessionRegistr
我们的应用过去只有一种登录方式:用户名和密码。一旦新用户登录到应用程序,他们的 session 将出现在 Spring Security 的 SessionRegistry 中。 现在我正在 Spri
我正在使用 Hazelcast 3.4 和 Spring security 3.2.5。当我部署应用程序并尝试登录时,登录成功但抛出异常,导致错误页面。无论错误页面如何,我都已登录并且我的 sessi
问题场景: 我正在尝试使用带有 Java 配置的 Spring Security v3.2.3 来配置 session 管理,以便将 maximumSessions 设置为 1 并将 maxSessi
我正在使用 spring security 进行自定义身份验证。我没有使用任何 AuthenticationProvider,但使用 UsernamePasswordAuthenticationTok
也许应该配置 session 过期时间,或者我的代码中有错误? 我的 Controller 代码片段。即使已注销,它也会显示用户名。 @GetMapping("/") public String
我是一名优秀的程序员,十分优秀!