Holen Sie sich alle angemeldeten Benutzer in Spring Security

Ich möchte eine Liste aller Benutzer erhalten, die derzeit in meiner Anwendung angemeldet sind. Ich weiß, dass ich spritzen sollSessionRegistry in meinem Code anrufengetAllPrincipals() Methode. Leider bekomme ich immer eine leere Liste. Es scheint, dassSessionRegistry ist nicht besiedelt und ich weiß nicht, wie ich es machen soll. Ich weiß, dass es bei StackOverflow ähnliche Fragen gibt, aber ich habe immer noch Probleme mit der Lösung meines Problems. Zuerst füge ich meiner web.xml diesen Code hinzu:

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>

Wie ich weiß, können Informationen über den Lebenszyklus (Erstellen, Zerstören) von Sitzungen abgerufen werden. Und das ist alles. Ich habe ein großes Problem damit, mich vorwärts zu bewegen. Meine Datei mit Sicherheitsbohnen ist unten dargestellt:

<beans:bean id="successAuth" class="pl.fp.microblog.auth.SuccessAuth"/>
<beans:bean id="failureAuth" class="pl.fp.microblog.auth.FailureAuth"/>

<http auto-config="true">
    <intercept-url pattern="/" access="ROLE_USER" />
    <intercept-url pattern="/profile/*" access="ROLE_USER" />
    <form-login 
        login-page="/login"         
        authentication-success-handler-ref="successAuth"
        authentication-failure-handler-ref="failureAuth"
        username-parameter="username"
        password-parameter="password"           
        login-processing-url="/login_processing_url"
    />          
    <security:logout logout-url="/logout_processing_url"/>  
    <session-management>
        <concurrency-control max-sessions="1" session-registry-alias="sessionRegistry"/>
    </session-management>
</http>

<beans:bean id="saltProvider" class="org.springframework.security.authentication.dao.ReflectionSaltSource">
    <beans:property name="userPropertyToUse" value="username"></beans:property>
</beans:bean>

<beans:bean id="userService" class="pl.fp.microblog.auth.UserService">
    <beans:property name="userDAO" ref="userDAO"/>
</beans:bean>

<authentication-manager>
    <security:authentication-provider user-service-ref="userService">
        <password-encoder hash="sha-256">
            <security:salt-source ref="saltProvider"/>
        </password-encoder>         
    </security:authentication-provider>
</authentication-manager>

Hier rufe ich die Methode getAllPrinciples () auf:

@Transactional
@Controller
public class SiteController {
    @Autowired
    private UserDAO userDAO;
    @Autowired
    private SessionRegistry sessionRegistry;    

    @RequestMapping(value = "profile/{login}")  
    public String profilePage(@PathVariable String login, HttpServletRequest req) throws SQLException {     
        ...
        sessionRegistry.getAllPrincipals().size()
        ...     
        return "profile";               
    }
}

Ich habe versucht hinzuzufügensession-managemenent Code in meinehttp, ConcurrentSessionFilter und ähnliche Dinge, aber in der Tat verstehe ich es nicht. Und die Dokumentation ist mir zu komplex. Kann mir jemand helfen und Schritt für Schritt sagen, was als nächstes zu tun ist? Welche Bohnen soll ich hinzufügen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage