Мне нужно выполнить действие (а именно обновить поле в пользовательской таблице) после успешного входа в систему.Пока я не могу найти, где обрабатываются данные для входа.
Часть представления входа в систему, относящаяся к этой форме, выглядит следующим образом:
<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
, потому что я хочу, чтобы работа выполнялась только один раз за сеанс (не каждый раз, когда пользователь выполняет поиск)?
Любая помощь приветствуется,