Spring 注销后引导 SessionScoped 对象未过期。在不同的控制器中自动装配两个不同的对象

Spring Boot SessionScoped Object not expired after logout. Autowires two different objects in different controllers

我需要在我的控制器/服务中自动连接登录用户对象 classes。所以我创建了一个 util Bean 作为

@Component
public class UtilBeans {
    @Autowired
    UserService userService;

    @Bean(name = "loggedInUser")
    @SessionScope
    public UserMaster userMaster() {
        UserMaster user;
        try {
            user = (UserMaster) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
            user.setAuthorities(userService.getUserAuthorities(user.getUserId()));

        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("user Not logged in");

        }
        return user;
    }
}

并在控制器 class 中用作

@Autowired
    @Qualifier(value = "loggedInUser")
    UserMaster user;

在大多数控制器中,它工作正常,但在某些控制器中,第一次登录的用户对象在我重新启动应用程序之前不会改变。

我的注销配置如下

.formLogin().loginPage("/loginForm").permitAll()
                .and()
                .formLogin().defaultSuccessUrl("/dashboard").and()
                
                
                .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .deleteCookies("JSESSIONID").clearAuthentication(true)
                .invalidateHttpSession(true).permitAll();

请帮我看看哪里做错了。我的理解是,Session Scoped 对象应该在注销时过期,它确实会发生变化,但为什么在某些情况下不会。

我错误地在控制器中为用户分配了相同类型和相同 ID 的不同对象,更改代码以删除该分配解决了问题。