FormLogin은 Spring Security에서 제공하는 인증방식이다.
Form Login의 동작 방식은 다음과 같습니다.

이러한 과정을 거친후 사용자가 원래 접속하려던 URL에 다시 접속하면, 세션에 저장된 인증 토큰이 유지되는 동안에는 해당 사용자를 인증된 사용자라고 판단하여 인증을 유지하게 됩니다.
dependencies {
compile "org.springframework.boot:spring-boot-starter-security"
}
패키지 > config > SecurityConfig.java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/user/**").permitAll()
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/user/login")
.usernameParameter("email")
.passwordParameter("password")
.defaultSuccessUrl("/")
.failureUrl("/user/login/fail")
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/user/logout"))
.logoutSuccessUrl("/");
}
}
| Code | Description |
|---|---|
| .authorizeRequests() | Security처리에 HttpServletRequest를 이용한다. ExpressionUrlAuthorizationConfigurer을 불러온다. |
| .antMatchers("resource") | 특정 리소스에 대해서 권한을 설정한다. |
| .anyRequest() | 모든 리소스를 의미하며 설정한 경로 외의 모든 경로를 말한다. |
| .authenticated() | 인증된 사용자만 접근할 수 있다. |
| .anonymous() | 익명 사용자가 접근할 수 있다. |
| .permitAll() | 인증 없이 접근할 수 있다. |
| .hasRole(String role) | 사용자가 해당되는 Role을 가지고 있으면 사용 할 수 있다. |
| .hasAnyRole(String role) | 사용자가 가진 Role 중에 해당되는 Role이 하나라도 있으면 접근할 수 있다. |
| Code | Description |
|---|---|
| .formLogin() | 로그인 페이지와 기타 로그인 처리 및 성공 실패를 사용하겠다는 의미이다. |
| .loginPage(String url) | 로그인 페이지 경로를 호출한다. |
| .usernameParameter(String username) | Spring Security에서 사용자를 구분할 수 있는 값을 가져온다. default값은 "username"이고 username 외에도 email등을 parameter로 지정할 수 있다. |
| .passwordParameter(String password) | Spring Security에서 사용자를 인증할 수 있는 값을 가져온다. default값은 "password"이다. |
| .loginProcessingUrl(String url) | 로그인 즉 인증처리를 하는 url을 설정한다. |
| .defaultSuccessUrl(String url) | 정상적으로 인증 성공했을때 이동할 url을 설정한다. |
| .failureUrl(String url) | 인증에 실패했을 경우 이동할 url을 설정한다. |
| .logout() | 로그아웃 시 설정을 추가할 수 있다. |
| .logoutUrl(String url) | 로그아웃을 처리할 url을 설정한다. |
| .logoutSuccessUrl(String url) | 로그아웃 성공 시 지정된 url로 이동한다. |
https://velog.io/@seongwon97/Spring-Security-Form-Login
https://lotuus.tistory.com/78