일반 사용자와 관리자를 나눠 놓고 기능을 보자
스프링서버에서 필요한 인증 및 인가기능이 구현되어있어서 편리하다.
build.gradle > dependencies에 추가해주고 gradle 눌러준다.
스프링 시큐리티와 타임리프 뷰 템플릿 엔진(로그인된 사용자의 이름을 표시해 주기 위해서 추가)을 추가해줬다.
security패키지를 만들고 websecurityconfig 클래스를 만들어서 스프링security 지원을 가능하게 한다. 오버라이딩을 통해서 재정의해준다.
@Configuration
@EnableWebSecurity // 스프링 Security 지원을 가능하게 함
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.headers().frameOptions().disable();
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.permitAll();
}
}
.anyRequest().authenticated() 여기를 주목해야하는데 어떤 요청이 오든지 로그인 과정이 없으면 로그인을 하도록 하겠다라는 의미이다. 로그인 페이지에 대해서만 default로 허용을 해주고,
완료되었을때 이동알 위치를 정해주는데 /가 기본적으로 홈을 나타내고 있고, 로그아웃기능도 허용해주는 것으로 설정을 끝냈다.
코드를 작성후 localhost:8080으로 이동해보니
내가 따로 설정해주지않아도 로그인 페이지가 나온다. 그렇지만 회원가입에 대한 내용은 없기때문에
로그인을 확인하기 위해서는 intelij에서 실행 로그를 활용한다.
Using generated security password라는 비밀번호가 생성되어있는데 그것을 가지고
아이디에는 user을 비밀번호는 생성된 것을 입력하면 로그인이 된다.
또한 로그아웃도 구현되어있는데 localhost:8080/logout를 url에 검색하면 로그아웃이 된다.