package com.cos.blog.config;
//이거 3개는 필수!
//빈등록
@Configuration
@EnableWebSecurity// 세큐리티 필터 등록 하기
@EnableGlobalMethodSecurity(prePostEnabled = true) // 특정 주소로 접근하면 권한및 인증을 미리 체크 하겠다
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//회원가입 _해쉬값변경
@Bean
public BCryptPasswordEncoder encodePWD() {
return new BCryptPasswordEncoder();
}
//spring security 로그인->변경(만들어놓은 로그폼)
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable() // 토큰 비활성화 테스트시 사용해야함
.authorizeRequests()
.antMatchers("/auth/**")
.permitAll() // 이 주소는 허가하고
.anyRequest() // 나머지 주소는 피터링을 해워야한다
.authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm");
}
}
package com.cos.blog.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@Service
public class UserService {
@Autowired
private BCryptPasswordEncoder encoder;
@Autowired
private UserRepository userRepository;
@Transactional
public void 회원가입(User user ) {
String encodePWD = encoder.encode(user.getPassword());
user.setPassword(encodePWD);
user.setRole(RoleType.USER);
userRepository.save(user);
}
/*
@Transactional(readOnly = true)
public User 로그인(User user ) {
return userRepository.findByUsernameAndPassword(user.getUsername(), user.getPassword());
}
*/
}
시큐리티 자동 로그아웃 시켜줌 /logout
<a class="nav-link" href="/logout">로그아웃</a>