Spring security - dodanie atrybutu do sesji

0

Cześć,
Robię projekt w Springu MVC 4 i chcę użyć Spring Security. Teraz dla URLa ("/login") mam metodę GET i POST (GET do wyświetlenia strony logowania, POST do sprawdzenia danych użytkownika i jeżeli dane są poprawne to dodaję e-mail jako atrybut do sesji):

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String logIn(@Valid Client client, BindingResult result, HttpServletRequest request) {
     ...
     request.getSession().setAttribute("email", email);
     return "redirect:/panel/";
}

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String displayLoginPage(ModelMap model) {
     ...
}

Dodałem już Spring Security i teoretycznie wszystko działa, ale nie wiem jak dodać email do sesji przed przejściem do nowego URLa albo jak wywołać metodę login (POST). Teraz mam coś takiego:

 @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/panel/**").access("hasRole('ROLE_USER')")
                .and()
                .formLogin().loginPage("/login")
                .defaultSuccessUrl("/panel/")
                .failureUrl("/login?message=error")
                .usernameParameter("email").passwordParameter("password")
                .and()
                .logout().logoutSuccessUrl("/login?message=logout");
    }

Potrzebuję to dodać żeby wiedzieć jaki użytkownik jest w danej chwili zalogowany i kogo dane powinny być wyświetlane po zalogowaniu.

0

Problem rozwiązany :D

Dodałem:

 SecurityContext ctx = SecurityContextHolder.getContext();
 Authentication auth = ctx.getAuthentication();
 String email = auth.getName();
0

@tryry

 String email = SecurityContextHolder.getContext().getAuthentication().getName();

1 użytkowników online, w tym zalogowanych: 0, gości: 1