스프링부트+jsp로 배달사이트 만들기-07 회원가입 03 비밀번호 암호화하기
2021. 12. 6. 12:23ㆍ스프링부트
비밀번호를 평문으로 저장했을시 서버가 해킹당하면 비밀번호가 그대로 유출될수 있습니다
spring-security의 PasswordEncoder를 사용하면 쉽게 비밀번호를 암호화 할 수 있습니다
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
pom.xml에 추가후 실행해보면 스프링시큐리티 기본 페이지가 보입니다
커스텀 로그인페이지를 사용하기 위해 설정파일을 추가합니다
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public BCryptPasswordEncoder encodePwd() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN, USER")
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/") // 인증 필요한 페이지 접근시 이동페이지
.loginProcessingUrl("/login")
.and()
.logout()
.logoutSuccessUrl("/myPage")
;
}
}
- @Configuration 설정파일로 등록
- @EnableWebSecurity 아래 구현하는 시큐리티 필터를 사용
- .antMatchers("/admin/**").hasRole("ADMIN") /admin으로 시작하는 url은 권한이 ADMIN인 사람만 가능
- .antMatchers("/user/**").hasAnyRole("ADMIN, USER") /user로 시작하는 url은 권한이 ADMIN 또는 USER인 사람만 가능
- .anyRequest().permitAll() 이 외의 요청은 누구나 가능
- .loginPage("/") 권한이 없는데 권한이 필요한 페이지로 이동시 "/"페이지로 이동
- .loginProcessingUrl("/login") 실제 로그인을 처리할 주소
- .logoutSuccessUrl("/myPage") 로그아웃 성공시 이동할 페이지
위에서 빈으로 등록한 BCryptPasswordEncoder를 이용해 비밀번호를 암호화 할수있습니다
UserController에서 bean을 주입받기위해 코드를 추가 joinProc() 회원가입 처리부분을 수정합니다
@Autowired
private BCryptPasswordEncoder pwdEncoder;
String encPwd = pwdEncoder.encode(join.getPassword());
join.setPassword(encPwd);
userService.join(join);
기존에 있던 아이디를 삭제하고 다시 회원가입을 하면 암호화된 비밀번호를 볼수있습니다
'스프링부트' 카테고리의 다른 글
스프링부트+jsp로 배달사이트 만들기-09 매장목록, 매장상세 (9) | 2021.12.06 |
---|---|
스프링부트+jsp로 배달사이트 만들기-08 스프링 시큐리티로 로그인 (6) | 2021.12.06 |
스프링부트+jsp로 배달사이트 만들기0 - 오라클 테이블생성 하기 (2) | 2021.12.05 |
스프링부트+jsp로 배달사이트 만들기-06 회원가입 02 MYBATIS 사용하기 (21) | 2021.12.05 |
스프링부트+jsp로 배달사이트 만들기-05 회원가입 01 (2) | 2021.12.04 |