2017-07-14 19 views
1

私はオンラインユーザーのリストを取得することはできません。私はオンラインユーザーのリストを得ることができません春のセキュリティ

@Override 
public void configure(HttpSecurity http) throws Exception { 
    http 
     .httpBasic() 
      .realmName("GlxssSecurity") 
      .and() 
     .requestMatchers() 
      .antMatchers("/oauth/authorize") 
      .and() 
     .authorizeRequests() 
      .antMatchers("/oauth/authorize").authenticated() 
      .and() 
     .sessionManagement() 
      .maximumSessions(1) 
      .sessionRegistry(sessionRegistry()); 
} 

@Override 
@Bean 
public AuthenticationManager authenticationManagerBean() throws Exception { 
    return super.authenticationManagerBean(); 
} 

@Bean 
public SecurityEvaluationContextExtension securityEvaluationContextExtension() { 
    return new SecurityEvaluationContextExtension(); 
} 

@Bean 
public SessionRegistry sessionRegistry() { 
    return new SessionRegistryImpl(); 
} 

@Bean 
public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() { 
    return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher()); 
} 
@Autowired 
private SessionRegistry sessionRegistry; 

public List getAdminUsers(){ 
    List<Object> list = sessionRegistry.getAllPrincipals(); 
    log.info(list.toString()); 
    return list; 
} 
+0

SessionRegistryImplクラスを追加してください。 – jorrin

+0

あなたはどうしますか? 'list'の値は何ですか? – dur

+0

https://stackoverflow.com/questions/11271449/how-can-i-have-list-of-all-users-logged-in-via-spring-security-my-web-applicat –

答えて

0
@Bean 
public HandshakeInterceptor handsUserInterceptor() { 

    return new HandshakeInterceptor() { 
     @Override 
     public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> map) throws Exception { 
      if (request instanceof ServletServerHttpRequest) { 
       ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; 
       Principal principal = request.getPrincipal(); 
       User user= userService.getUserWithAuthoritiesByLogin(principal.getName()).get(); 
       for (Authority authority : user.getAuthorities()) { 
        if ("ROLE_ADMIN".equals(authority.getName())){ 
         SecurityUtils.getLoginAdminUsers().add(user); 
         break; 
        } 
       } 
      } 
      return true; 
     } 

     @Override 
     public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { 

     } 
    }; 
} 

私は、このようにそれを解決したが、彼はかなりの規範に準拠していませんでした。

関連する問題