当前位置: 首页 > 知识库问答 >
问题:

基于Redis的Spring Security并发控制

狄溪叠
2023-03-14

我们有一个关于Spring框架的项目。它包含具有以下配置的Spring Security性:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers(LOGIN_URL + "/**").permitAll()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/**").access(<...>)
        .and()
            .formLogin()
               .loginPage(LOGIN_URL)
               .defaultSuccessUrl(LOGIN_URL + "/success", true)
               .failureUrl(LOGIN_URL + "/error")
            .usernameParameter("username").passwordParameter("password")
        .and()
            .logout().logoutSuccessUrl(LOGOUT_URL)
        .and()
            .csrf()
        .and()
            .securityContext().securityContextRepository(reloadUserAuthoritiesService)
        .and()
           .sessionManagement()
           .maximumSessions(1)
           .sessionRegistry(sessionRegistry)
           .expiredUrl(LOGIN_URL)
        ;
    }

它可以在一个Apache Tomcat服务器上工作。如果我尝试从另一个浏览器登录,我以前的http会话将过期。

    null

所有这些方法都不起作用。我还发现了这个问题:https://github.com/spring-projects/spring-session/issues/65,它是两年前实现的。有人能帮我吗?

共有1个答案

荆梓
2023-03-14

谢谢大家。我忘了创建SpringSessionBakedSessionRegistry bean。问题现在解决了。

 类似资料:
  • 我正在使用spring-boot 2.3.9和spring-security以及keycloak 12.0.4。 和我的服务bean创建配置 编辑:这可能与Spring-Cloud-Starter-Sleuth有关。如果我移除这个依赖关系,所有的事情就会像预期的那样工作。但我也需要侦探。

  • 主要内容:Java10 基于时间的发布版本控制,JDK 版本格式,Java10 版本控制的示例Java10 基于时间的发布版本控制 从 Java 10 开始,Oracle 为 Java 版本引入了严格的基于时间的版本控制模型。现在 Java 将在每六个月后发布一个主要版本。Java 10 于 2018 年 3 月发布,以后所有主要版本都计划在未来几年的 3 月和 9 月发布。发布进一步分为三大类。 功能发布: 功能发布包含特定于语言的功能、JVM 功能、新/改进的 API、删除/弃用 AP

  • 我一直在考虑使用Apache Kafka作为事件源配置中的事件存储。发布的事件将与特定的资源相关联,传递到与资源类型相关联的主题,并按资源ID分片到分区中。因此,例如,创建类型为Folder和id 1的资源将产生一个FolderCreate事件,该事件将通过在主题中的分区总数中对id 1进行分片来传递到给定分区中的“Folders”主题。即使我不知道如何处理使日志不一致的并发事件。 最简单的场景是

  • 问题内容: 有一个检查玩家是否在线,并执行状态变更知道他的ID。这必须同时从多个goroutine中完成。 现在,我计划使用streamrail的并发映射,但是常规映射和使用通道的同步又如何呢? 在Go中应该始终首选它吗? 在某些情况下应该首选吗? 他们基本上只是完成同一件事的两种方法吗? 顺便说一句,我知道口号: 不通过共享内存进行通信通过通信共享内存 但是在stdlib中有锁定机制,而在文档中

  • 基于锁的并发数据结构设计,需要确保访问线程持有锁的时间最短。对于只有一个互斥量的数据结构来说,这十分困难。需要保证数据不被锁之外的操作所访问到,并且还要保证不会在固有结构上产生条件竞争(如第3章所述)。当你使用多个互斥量来保护数据结构中不同的区域时,问题会暴露的更加明显,当操作需要获取多个互斥锁时,就有可能产生死锁。所以,在设计时,使用多个互斥量时需要格外小心。 在本节中,你将使用6.1.1节中的

  • 主要内容:并发控制的问题在并发控制中,可以同时执行多个事务。 它可能会影响事务结果。保持这些事务的执行顺序非常重要。 并发控制的问题 并发事务以不受控制的方式执行时可能会出现几个问题。 以下是并发控制中的三个问题。 更新丢失 脏读 不可重复读取 1. 更新丢失 当访问相同数据库项的两个事务包含其操作时,某些数据库项的值不正确,则会发生丢失的更新问题。 如果两个事务T1和T2读取记录然后更新它,那么第二个更新将覆盖更新第一