Использование области Spring Session для входа пользователя - PullRequest
0 голосов
/ 25 августа 2011

Я новичок в Spring и Hibernate. Я использовал класс POJO для поддержки данных sessoin. Я поставил область действия как сеанс.здесь

@Component
@Scope("session")
public class SessionInfo {
    private int userId;
    private String loggingUser;

// getter and setter methods

}

тогда мой класс контроллера установлен как scope = "request" и методы в этом контроллере, я могу передать класс sessionInfo и установить / получить данные сеанса.

@RequestMapping(method = RequestMethod.GET)
    public String index(Model model,SessionInfo session) {
        session.setLoggingUser("akudahewa@gmail.com");
        // set model attributes ....
        return "BusinessCategory/index";
    } 

Thatsкак я поддерживаю данные сеанса в моем приложении.Таким образом, каждый раз, когда мне нужно передать класс sessionInfo в каждый метод, где это необходимо, и проверить, есть ли какой-либо пользователь в объекте сеанса, является ли способ правильным или нет.а также мы не можем использовать перехватчик для этого.Если нет, то как лучше сохранить данные сессии весной.

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Spring security также включает класс с именем SecurityContextHolder. Этот класс является потокобезопасным "singleton", который позволяет вам получить доступ к контексту входа в систему для текущего запроса. В частности, вы можете получить доступ к субъекту аутентификации, позвонив по номеру SecurityContextHolder.getContext().getAuthentication().getPrincipal().

Если вы используете LdapAuthenticationProvider в качестве поставщика аутентификации, экземпляр по умолчанию, возвращаемый при вызове getPrincipal(), будет иметь тип LdapUserDetailsImpl. Это можно настроить, внедрив пользовательский UserDetailsContextMapper и вставив его в свойство userDetailsContextMapper вашего экземпляра LdapAuthenticationProvider.

0 голосов
/ 25 января 2013

Выписка из:

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/technical-overview.html#d4e731

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof UserDetails) {
  String username = ((UserDetails)principal).getUsername();
} else {
  String username = principal.toString();
}

Пожалуйста, перейдите по ссылке выше, это мне очень помогло.Удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...