我正在制作登录页面,按照官方指南。
我想添加一个函数,使重定向到home如果用户加入。
逻辑是这样的。
- 包含email、密码和用户名的用户连接。
- 如果有认证,直接回home。
如何通过身份验证重定向到home ?
@Slf4j
@Controller
@RequiredArgsConstructor
public class LoginController {
@GetMapping("/login")
public String loginForm(@ModelAttribute LoginForm loginForm) {
return "login/loginForm";
}
}
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final UserSecurityService userSecurityService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests() // 인가 요청 받기
.antMatchers("/", "/home", "/join",
"/css/**", "/*.ico", "/error").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.failureUrl("/login")
.usernameParameter("email")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.invalidateHttpSession(true);
}
基本上,当用户成功登录时,安全性会根据SessionCreationPolicy值生成用户会话。
如果您想将会话系统更改为无状态系统。
但是遵循下面的代码。
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
}
,然后需要设置认证对象。
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken("principal", "credentials", null));