2016-11-26 4 views
0

Я реализую поток входа в facebook, где мне нужно сохранить состояние перед перенаправлением и получить его после перенаправления обратно в приложение для проверки. Я пробовал так:Spring mvc поддерживает сеанс после перенаправления

@RequestMapping 
    public void redirectToFacebook(HttpSession session, HttpServletResponse response) throws IOException { 
     String state = UUID.randomUUID().toString(); 
     session.setAttribute("facebook_state", state); 

     UriComponentsBuilder uriBuilder = UriComponentsBuilder 
       .fromUriString(providerLoginEndpoint) 
       .queryParam("redirect_uri", redirectUrl) 
       .queryParam("client_id", clientId) 
       .queryParam("scope", "public_profile") 
       .queryParam("state", state) 
       .queryParam("response_type", "code"); 

     response.sendRedirect(uriBuilder.toUriString()); 
    } 

    @RequestMapping("/redirect") 
    public String authorize(Model model, HttpSession session, 
          @RequestParam("code") final String code, 
          final @RequestParam("state") String state) { 
     String originalState = (String) session.getAttribute("facebook_state"); 
     //... 
    } 

Hovever originalState имеет нулевое значение, и идентификатор сеанса гладкошерстных после callack. Есть ли способ поддерживать состояние сеанса до и после перенаправления с стороннего хоста?

ответ

0

бы добавить это к WebSecurityConfig

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.sessionManagement() 
      .maximumSessions(1) 
      .and() 
      .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) 
      .sessionFixation().none(); 
    //.. 
Смежные вопросы