SpringBoot: где обрабатывается форма входа? - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно выполнить действие (а именно обновить поле в пользовательской таблице) после успешного входа в систему.Пока я не могу найти, где обрабатываются данные для входа.

Часть представления входа в систему, относящаяся к этой форме, выглядит следующим образом:

<form th:action="@{/login}"  th:object="${user}" method="post" role="login">

      <h2 class="text-center" th:text="${companyName}"></h2>

       <input type="email" id="username" name="username" autocomplete="username" th:placeholder="|Email@${clientEmailDomain}|" required class="form-control input-lg"  />

       <input type="password" class="form-control input-lg" id="password" name="password" autocomplete="current-password" placeholder="Password" required="" />

       <button type="submit" class="btn btn-lg btn-primary btn-block">Log in</button>                  

  </form>

WebSecurityConfigAdapter включает в себя:

 @Override
protected void configure(HttpSecurity http) throws Exception {

    http
            .authorizeRequests()
            .antMatchers("/",
                    "/css/**",
                    "/fonts/**",
                    "/img/**",
                    "/js/**",
                    "/register",
                    "/resetPassword",


            ).permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .defaultSuccessUrl("/search/" + clientOsVersion)
            .permitAll()
            .and()
            .logout()
            .permitAll();

    // THIS IS ONLY DURING DEV to access to the database
    http.csrf().disable();
    http.headers().frameOptions().disable();
    // END OF DEV ONLY
}

В контроллере входа в систему никогда не вызывается следующий метод (хотя вызывается его аналог "get"):

@PostMapping("/login")
public ModelAndView processLoginForm(ModelAndView modelAndView,
         @Valid User user
) {

    System.err.println("Processing login data"); // This line is NEVER printed!!!

    // Here I need to update a user's attribute.

    modelAndView.addObject("clientEmailDomain",
            clientEmailDomain);

    modelAndView.addObject("companyName",
            companyName);

    return modelaAndView;
}

Что мне следует сделать, чтобы использовать мой метод processLoginForm, или где следуетЯ поместил свой фрагмент кода, чтобы выполнить некоторую работу после успешного входа в систему до достижения маршрута /search, потому что я хочу, чтобы работа выполнялась только один раз за сеанс (не каждый раз, когда пользователь выполняет поиск)?

Любая помощь приветствуется,

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