반응형
Spring Security 로그인
React + spring boot
SecurityConfig
package com.sanplink.api.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf((csrf) -> csrf.disable());
http.authorizeHttpRequests((authorize) ->
authorize.requestMatchers("/**").permitAll()
);
http.formLogin((formLogin) -> formLogin.loginPage("/users/login")
.defaultSuccessUrl("http://localhost:3000/")
);
return http.build();
}
}
MyUserDetailsService
package com.sanplink.api.user;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class MyUserDetailsService implements UserDetailsService {
private final UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Optional<User> result = userRepository.findByUsername(username);
if (result.isEmpty()) {
throw new UsernameNotFoundException("그런아이디 없음");
}
User user = result.get();
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("일반유저"));
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), authorities);
}
}
'study > Spring' 카테고리의 다른 글
Content-Type 'application/x-www-form-urlencoded;charset=UTF-8' is not supported. (0) | 2024.09.20 |
---|---|
Bean 생성 방법 (0) | 2024.08.19 |
메모리 구조 (0) | 2024.08.14 |
[Spring Boot] 환경 설정 및 설치 (0) | 2023.01.25 |