본문 바로가기

Spring13

Security 로그인 검증 로직 및 csrf 설정 @Service public class CustomUserDetailsService implements UserDetailsService { @Autowired private UserRepository userRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { UserEntity userEntity = userRepository.findByUsername(username); if (userEntity != null) { //널이아니면 user가 있는것 return new CustomUserDetails(userEntity); } return null; } }.. 2024. 2. 21.
Security 로그인 검증 로직 @Service public class CustomUserDetailsService implements UserDetailsService { @Autowired private UserRepository userRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { UserEntity userEntity = userRepository.findByUsername(username); if (userEntity != null) { //널이아니면 user가 있는것 return new CustomUserDetails(userEntity); } return null; } }.. 2024. 2. 21.
Security 커스텀 로그인 설정 LoginController /login경로 접근시 login폼 이동하게 작성 SecurityConfig에 다음과같이 코드를 추가한다. http .formLogin((auth) -> auth.loginPage("/login") .loginProcessingUrl("/loginProc") .permitAll() ); http .csrf((auth) -> auth.disable()); 인가되지 않은 경로로 접근시 로그인하지않은 경우 "/login" 경로로 이동, 로그인진행은 /loginProc경로로 요청하며 로그인 이후 모든경로를 모두허용(hasRole권한이 없는 경로는 제외)한다. csrf는 enable시 post요청시에 header에 토큰값을 보내주어야 하므로 임시적으로 disable 한다. // 패스워.. 2024. 2. 21.
Security Config 설정 @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { //메소드명은 자유 http .authorizeHttpRequests((auth) -> auth .requestMatchers("/", "/login").permitAll() .requestMatchers("/admin").hasRole("ADMIN") .requestMatchers("/my/**").hasAnyRole("ADMIN", "USER") .anyRequest().authenticated() ); return http.build(); .. 2024. 2. 21.
[스프링] 코드가 정상적으로 작동안하는 알수없는 에러 참고!!! 안녕하세요 스프링 개발자 입니다. 오늘 발견한 이슈?에러사항 인데 저도 처음 겪는 이슈사항이라 글적어 봅니다. 아마 저처럼 다른분들도 코드에는 문제가 없는거같은데 원하고자하는 결과를 못얻고 Exception이 발생하여 에러가 발생하는 상황을 겪어 보셨을겁니다!! System.out.println(""); 테스트 코드를 찍어봐도 동작을 안하는 경우가 있는데요 저같은경우에는 해당 프로젝트 마우스 우클릭후 Run as > Maven Install을 했을경우에 다음과같이 Build Failed가 발생했습니다. 그밑줄에 더 내용이 있는데 사진을 찍지 못한점 죄송합니다.. 사진을 찍지는 못했지만! org.apache.jasper.tagplugins.jstl.core does not exist 저런 내용이 있었습니다.. 2022. 11. 8.
H2 데이터베이스 설치 및 스프링 연동 H2 데이터베이스 설치 개발이나 테스트 용도로 가볍고 편리한 DB h2 데이터베이스는 다음 링크에 들어가서 1.4.200 버전을 설치해보자. https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com 만약 이미 설치하고 실행까지 했다면 다시 설치한 이후에 ~/test.mv.db 파일을 꼭 삭제 h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다. 권한 주기: chmod 755 h2.sh (윈도우 사용자는 x) 실행: ./h2.sh (윈도우 사용자는 h2.bat) 데이터베이스 파일 생성 방법 jdbc:h2:~/test (최초 한번) ~/test.mv.db 파일 생성 확인 이후부터는 jdbc:h2:tcp:.. 2022. 9. 23.
Thymeleaf 사용법 및 기본 문법 Thymeleaf 사용법 thymeleaf 뷰 템플릿을 사용하기 위해서는 ThymeleafViewResolver를 등록해야 한다. 아래 라이브러리를 추가하면 Spring이 위 작업을 자동화 해준다. Gradle - build.gradle implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' Maven - pom.xml org.springframework.boot spring-boot-starter-thymeleaf 위 설정을 추가 후 빌드하면 application.properties에 아래 코드가 자동으로 추가된다. 디폴트 설정을 원하지 않는다면 직접 수정해도 된다. application.properties spring.thyme.. 2022. 9. 23.
[JPA]객체를 테이블에 맞추어 모델링하는 방법 [연관 관계가 없는 객체] [참조 대신에 외래키를 그대로 사용] @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age; @Column(name = "TEAM_ID") private Long teamId; ... } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; ... } [외래키 식별자를 직접 다룸] //팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(tea.. 2022. 9. 15.