Получить исходный URL-адрес запроса на странице авторизации в Spring Security - PullRequest
7 голосов
/ 13 января 2011

В моем файле конфигурации безопасности Spring объявлено следующее (http://www.springframework.org/schema/security/spring-security-2.0.1.xsd):

<form-login login-page="/login.html" />

. Что делает Spring Security - перенаправляет пользователя на эту страницу, если у него нет правильных учетных данных для аутентификации.я могу получить URL страницы, на которую пытался попасть пользователь?

Ответы [ 3 ]

10 голосов
/ 13 января 2011

Исходный запрос представлен объектом SavedRequest, к которому можно получить доступ как атрибут сеанса с именем SPRING_SECURITY_SAVED_REQUEST_KEY.

1 голос
/ 07 февраля 2018

в моем случае я сделал что-то подобное, и это сработало для меня.

@Autowired
private LoggedUserListener loggedUserListener;

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
    .authorizeRequests()
    .antMatchers("/find/**","/","/Application/**")
    .access("hasRole('ROLE_USER')")
    .successHandler(loggedUserListener)
//some other stuff
}



@Component
public class LoggedUserListener implements AuthenticationSuccessHandler{

@Autowired
private UserRepo userRepo;

@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
        Authentication authentication) throws IOException, ServletException {

    HttpSession session = request.getSession();
    SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST");

    if(savedRequest != null) {

        User u = userRepo.findByUsername(authentication.getName());

        u.setLastLogin(new Date()); 
        u.setAccountNonLocked(false);

        userRepo.save(u);
        response.sendRedirect(savedRequest.getRedirectUrl());
    }
  }

}
1 голос
/ 29 декабря 2016

В Spring Security 4

Исходный запрос представлен объектом DefaultSavedRequest , к которому можно обратиться как атрибут сеанса с именем SPRING_SECURITY_SAVED_REQUEST .

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(HttpSession session) {
    DefaultSavedRequest savedRequest = (DefaultSavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...