Как получить Spring Security SessionRegistry? - PullRequest
4 голосов
/ 08 октября 2010

Мне не удается найти ссылку на SessionRegistry Spring Security (V3) внутри действия Struts.

Я настроил прослушиватель внутри моего файла web.xml:

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

И я пытался использовать аннотацию @Autowired, чтобы привести ее в действие:

@Autowired
private SessionRegistry sessionRegistry;

@Override
public String execute() throws Exception {
    numberOfUsersLoggedin= sessionRegistry.getAllPrincipals().size();
    return SUCCESS;

}


public SessionRegistry getSessionRegistry() {
    return sessionRegistry;
}

public void setSessionRegistry(SessionRegistry sessionRegistry) {
    this.sessionRegistry = sessionRegistry;
}

Конфигурация http выглядит следующим образом:

    <session-management invalid-session-url="/public/login.do?login_error=expired"
        session-authentication-error-url="/public/login.do" 
        session-fixation-protection="newSession">
        <concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
    </session-management>    

Обычно мне удобнее подключать пружинный компонент, но я не уверен, что это можно сделать с помощью пространства имен.Каждый раз, когда выполняется действие, реестр сеанса обнуляется.

Может кто-нибудь указать на то, что я здесь делаю неправильно, или показать мне пример?

Заранее благодарим за любые / все ответы!

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Если вы настраиваете Spring Security по пространству имен, для доступа к SystemRegistry могут быть полезны следующие атрибуты тега concurrency-control :

  1. SESSION-реестрового псевдоним.
  2. сеансами-реестра исх.

Описание каждого из атрибутов из официальной документации:

сеансовый реестр псевдоним. Также может быть полезно иметь ссылку на внутренний сеанс Реестр для использования в ваших собственных bean-компонентах или в интерфейсе администратора. Вы можете выставить внутренний компонент с помощью атрибута session-registry-alias, давая ему имя, которое вы можете использовать в другом месте вашей конфигурации.

сеансы-реестр исй . Пользователь может предоставить свою собственную реализацию SessionRegistry, используя Атрибут session-registry-ref. Другой одновременный контроль сеанса бобы будут подключены для его использования.

1 голос
/ 08 октября 2010

Не уверен, что вы ссылались на раздел Управление сеансами в справочной документации Spring Security. Имеет фрагмент, объединяющий пространство имен и пользовательские компоненты.

...