При входе в систему после этого я должен перенаправить на домашнюю страницу. Как я понимаю, я перенаправляю на /login
POST-запрос . И увидеть пустую страницу. Как мне это исправить?
Я пытался написать эту функцию, но ничего не происходит.
.successForwardUrl("/")
.loginProcessingUrl("/")
.defaultSuccessUrl("/")
Я создаю обработчик для успешного входа в систему
SecurityConfig
override fun configure(http: HttpSecurity) {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/",
"/css/**",
"/img/**",
"/js/**",
"/signup/**").permitAll()
.anyRequest().authenticated()
.antMatchers("/admin/**").hasAnyRole(UserRole.ADMIN.name)
.and()
.formLogin()
.successHandler(SuccessLoginHandler())
.loginPage("/login")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.permitAll()
http.addFilter(JWTAuthenticationFilter(authenticationManager(), jwtUtil = jwtUtil))
http.addFilter(JWTAuthorizationFilter(authenticationManager(), jwtUtil = jwtUtil, userDetailService = adminDetailsServiceImpl))
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
}
SuccessLoginHandler
@Component
class SuccessLoginHandler : AuthenticationSuccessHandler {
private val redirectStrategy: RedirectStrategy = DefaultRedirectStrategy()
override fun onAuthenticationSuccess(request: HttpServletRequest, response: HttpServletResponse, auth: Authentication?) {
try {
redirectStrategy.sendRedirect(request, response, "/")
} catch (ex: IOException) {
err.println(ex)
throw RuntimeException()
}
}
}
Контроллер
@GetMapping("/")
fun index(mode: Model): String{
return "index"
}
@PostMapping("/signup")
@ResponseStatus(code = HttpStatus.CREATED)
fun signUp(@RequestBody admin: AdminDTO): AdminDTO {
admin.userRole = UserRole.ADMIN
return adminService.create(admin)
}
@GetMapping("/login")
fun login(): String {
return "login"
}