본문 바로가기

전체 글111

[회원정보 수정] 영속화 / 세션 정보 수정 UserService @RequiredArgsConstructor @Service public class UserService { private final UserRepository userRepository; private final BCryptPasswordEncoder bCryptPasswordEncoder; @Transactional public User 회원수정(int id,User user) { // 1. 영속화 // (1) get(): 무조건 찾았다.걱정마 // (2) orElseThrow(): 못찾았으니 exception 발동 User userEntity = userRepository.findById(id).get(); // 2. 영속화된 오브젝트 수정 userEntity.setName(u.. 2024. 3. 29.
[회원정보 수정] @AuthenticationPrincipal / Ajax사용 Authentication이란? Spring Security에서 사용자를 나타내는 중요한 객체 Spring Security에서는 사용자의 인증 및 인가 정보를 Authentication객체에 담는다. 즉 이 객체는 현재 사용자를 나타내는 핵심 객체이며, 사용자가 인증되면 이 객체가 생성되어야 한다. @AuthenticationPrincipal 이란? @AuthenticationPrincipal 어노테이션을 사용하면 세션에 저장된 현재 사용자의 정보를 쉽게 찾을 수 있다. 예를 들어 로그인 후 세션에 저장된 사용자 정보를 Authentication 객체를 통해 가져오려면 일련의 과정을 거쳐야한다. 그러나 @AuthenticationPrincipal을 사용하면 이 과정을 간소화할 수 있다. @GetMappi.. 2024. 3. 28.
[로그인] UserDetailService 로그인할 때 POST방식 쓰는이유? 로그인 POST는 보통 INSERT할 때 쓰지만 예외적으로 로그인은 DB에 해당 정보를 SELECT하는 것임에도 보안해야 할 사용자의 개인 정보를 서버에 전달하는 과정이기 때문에 body에 담아 전송하는 POST방식을 택한다. 따라서 URL에 정보가 노출되지 않는다. PrincipalDetailsService PrincipalDetailsService 클래스는 Spring Security에서 사용자의 인증 정보를 조회하는 역할을 한다. 주로 사용자의 아이디(username)를 기반으로 데이터베이스에서 사용자 정보를 조회하고, 조회된 정보를 PrincipalDetails 객체로 변환하여 반환한다. @RequiredArgsConstructor @Service public .. 2024. 3. 28.
@Transactional이란? @Transactional이란? @Transactional은 스프링 프레임워크에서 제공하는 어노테이션으로, 트랜잭션을 관리하기 위해 사용된다. 메서드나 클래스에 붙여주며 해당 메서드나 클래스의 실행이 하나의 트랜잭션 단위로 처리된다. 이러한 작업들은 모두 성공하거나 모두 실패해야 한다. 트랜잭션의 ACID 속성을 충족시키기 위해 일반적으로 "원자성(Atomicity)", "일관성(Consistency)", "고립성(Isolation)", "지속성(Durability)"을 보장해야 한다. @Transactional 어노테이션을 사용하면 스프링은 해당 메서드나 클래스를 실행할 때 트랜잭션을 시작하고, 메서드 또는 클래스의 실행이 성공하면 트랜잭션을 커밋(commit)하여 변경 사항을 영구반영한다. 만약 실행.. 2024. 3. 26.