spring boot 7

CustomUserDetails 클래스Builder 적용, JPA 활용한 UserEntity

생각기존 UserDetails 인터페이스의 인스턴스가 가진 필드 외에 email을 추가한 커스텀 UserDetails 클래스를 만들어 달라고 했다. 그 결과 아래와 같은 소스코드를 만들어 줬다.일반 CustomUserDetails 클래스1. CustomUserDetails 클래스 import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;public class CustomUserDetails implements UserDetails { private final String username; ..

Java/SpringBoot 2024.10.28

UserDetails, org.springframework.security.core.userdetails.User

생각UserDetails와 org.springframework.security.core.userdetails.User 관계가 궁금했다.return으로 new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), user.isEnabled(), true, true, true, authorities); 이런 소스 코드를 작성했는데 org.springframework... 이게 뭔가 싶었다. 개발자가 만든 User객체가 아닌 다른 User에 값을 저장한다고 하니 궁금했다. 흠.. 너는 누구냐.UserDetails 인터페이스UserDetails는 Spring Security에서 사용자의 정보를 제공하기 ..

카테고리 없음 2024.10.28

UserDetailsService, UserDetails, GrantedAuthority, SimpleGrantedAuthority, stream

생각관리자 페이지와 관리자 권한 설정, 부여에 대하여 수업을 듣는데 @Service 단에서 클래스를 만드는데 UserDetailsService 인터페이스를 상속받는 클래스로 만들었다. 설명을 해주셨지만 처음보는 인터페이스라 금방 까먹었다. 하하. 그래서 공부할 겸 정리해본다.왜 이렇게 어렵냐.. ㅠUserDetailsServiceUserDetailService는 Spring Security에서 사용자 정보를 가져오는데 사용되는 인터페이스이다.주요 역할은 애플리케이션의 사용자 정보를 제공한다.사용자의 인증과 권한 부여에 사용된다.사용자 정보 로드UserDetailsService는 특정 사용자의 정보를 데이터베이스나 다른 저장소에서 가져오는 메서드를 정의한다. 주로 사용자의 이름(username)으로 해당 ..

Java/SpringBoot 2024.10.28

@Configuration, @Bean, @EnableWebSecurity, SecurityFilterChain, HttpSecurity

생각spring security에 대해서 수업을 듣다가 사용자 권한에 들어가면서 특정 클래스에 @Configuration 어노테이션을 정의해줬다. 그래서 이게 정확히 무엇인지 궁금했다.그리고 찾아보니 @Bean과 같이 사용되는데 각 Bean의 인스턴스는 컨테이너 내에서 하나만 존재 한다는 설명을 듣고 이해가 안 갔다. 하나만 존재한다는 말이 무슨 말인지 이해가 가지 않아서 관련 내용을 더 찾아보았다.@Configuration, @Bean, @EnableWebSecurity, SecurityFilterChain, HttpSecurity의 중요성Spring Security에서 보안 관련 기능을 추가하려면 SecurityFilterChain 인터페이스를 사용해야한다.그리고 SecurityFilterChain ..

Java/SpringBoot 2024.10.28

@Param

생각Mapper에서 @Param 어노테이션을 사용하여 값을 xml로 전달한다고는 이해하고 있는데 정확히 알지는 못하여서 정리하고자 글을 작성한다. @ParamMyBatis에서의 @Param은 SQL 쿼리에서 사용하는 파라미터를 지정하는데 사용된다.여러 개의 파라미터를 메소드에 전달할 때 각각의 파라미터에 이름을 붙여 SQL 쿼리에서 사용할 수 있게 한다. 예시 1// Controller 예시public interface UserMapper { User getUser(@Param("id") int id, @Param("name") String name);}// xml 예시 SELECT * FROM user_table WHERE id = #{id} AND name = #{name} ..

Java/SpringBoot 2024.10.28

@ModelAttribute

생각@ModelAttribute 어노테이션은 객체를 바인딩한다고 알고 있다. 객체라면 내가 만든 DTO 라고 해야하나..여하튼 좀 더 자세히 알고 싶어서 정리해두면 좋을 거 같아서 글을 작성한다. @ModelAttribute HTTP 요청의 파라미터를 객체에 바인딩할 때 사용한다.주로 폼 데이터를 처리할 때 유용하다. 등록// Controller 예시@PostMapping("/register")public String register(@ModelAttribute User user) { // user 객체에 폼 데이터가 바인딩됩니다. return "Registration successful for " + user.getName();} 폼 데이터에서 입력한 값이 User 데이터 타입의 user ..

Java/SpringBoot 2024.10.28

@RequestParm

생각@RequestParam을 과 , 을 통해 입력한 값을 HTTP 형태로 받는 정도로만 이해하고 있어서 혹시라도 잘못 이해하고 있지 않을가 싶어서 @RequestParam에 대해서 찾아보았다. @RequestParamHTTP 요청의 쿼리 파라미터나 폼 데이터로부터 값을 바인딩할 때 사용한다. Submit 이런 예시인 경우 input 태그에 안녕하세요. 입력하고 button 태그를 클릭하면 input에 입력한 값이 브라우저 화면에 이 출력된다.// Controller 예시@GetMapping("/message") public String message(@RequestParam String message) { return "Hello, " + message;} 코드 흐름사용자가 필드에 "안녕하세요"라고..

Java/SpringBoot 2024.10.28