목록분류 전체보기 (783)
쌓고 쌓다

Entity 자체를 요청과 응답을 처리하는데 그대로 사용하니 다음과 같은 문제 또는 비효율적인 부분이 발생했다... 먼저 회원 엔티티를 보자. @Entity @Data public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String loginId; private String loginPwd; private String name; @Enumerated(EnumType.STRING) private Role role; @CreationTimestamp private LocalDateTime regDate; @Enumerated(EnumType.STRING) private Memb..

https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 1사분면의 점들의 개수를 구해 *4를 해주면 모든 점들의 개수를 구할 수 있다. 작은 원과 큰 원 사이의 점들을 구하기 위해 원의 방정식을 사용한다. x는 1부터 r2까지 반복문을 돌리며 각 원의 높이 y를 구한다. 구한 y를 각각 내림과 올림을 해준다. r1 ceil, r2 floor 하는 이유 : r1보다 크거나 같고 r2보다 작거나 같은 구간의 정수를 구해야하기 때문에 r1을 올..

"/login"으로 로그인을 시도하여 System.out.println("로그인 시도한 pwd = " + member.getLoginPwd()); String encodePwd = bCryptPasswordEncoder.encode(member.getLoginPwd()); System.out.println("로그인시 입력한 비밀번호를 인코딩한 결과 = " + encodePwd); 인코딩된 비밀번호 로그를 출력해보았다. 로그인 시도한 pwd = 1234 로그인시 입력한 비밀번호를 인코딩한 결과 = $2a$10$Jr8A352R8VZcfnN/SP5vCubnL2TZSUm4FSNioawR.VZ5X7i2kvldu 로그인 시도한 pwd = 1234 로그인시 입력한 비밀번호를 인코딩한 결과 = $2a$10$Vf/peA..

컨트롤러에서 인증된 회원 정보를 어떻게 받아서 게시글을 쓰고 수정하고 삭제 등등을 할까? 싶었다. 다음과 같은 방법이 있었다. 1. SecurityContextHolder에서 꺼내기 @GetMapping("/get1") public String get1() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); PrincipalDetails principal = (PrincipalDetails) authentication.getPrincipal(); TestUser testUser = principal.getTestUser(); System.out.println("[1] testUser = " + t..

Authentication(인증) : 누구인지 확인하는 절차로 실제 사용자가 맞는지 로그인하는 과정이라고 생각하면 된다. Authorization(권한부여) : 인증된 사용자에 대해 특정 리소스에 접근이 가능한 권한을 부여하거나 확인하는 과정이다. build.gradle implementation group: 'com.auth0', name: 'java-jwt', version: '4.4.0' JwtProperties.java package com.example.spotserver.config.jwt; import org.springframework.beans.factory.annotation.Value; public class JwtProperties { @Value("${jwt.secrectKey}"..

JWT는 서명된 토큰에 중점을 둔다. 즉, JWT 토큰은 내가 쓴게 맞어라는 서명의 용도로 사용하는 것이다. Authorization에 사용 사용자가 성공적인 로그인한 이후에 우린 JWT 토큰을 응답으로 준다. 사용자는 이 토큰을 가지고 허용된 리소스에 접근할 수 있는 것이다. JWT 구조 JWT는 3 파트로 나눠지며 각 파트는 . 으로 구분된다. xxxxx.yyyyyy.zzzzz 구조를 갖는 것이다. 다음은 3 파트를 설명한다. 1. Header 보통 서명에 사용된 알고리즘과 토큰 유형을 갖는다. { "alg": "HS256", "typ": "JWT" } 이 내용 JSON은 Base64Url로 인코딩되어 JWT의 첫번째 부분을 차지한다. 2. Payload Playload는 Claim을 포함한다. 나중..

시큐리티 세션 = Authentication ( UserDetails ) 구조이다. 우리가 저장할 정보는 UserDeatils 객체여야하며 그것은 Authentication으로 감싸져있다. 이것을 세션으로 사용한다. JWT를 사용하면 세션을 만들 이유는 없지만. 권한처리 때문에 일단 사용한다고하는데 JWT에 권한도 담겨져 있는것이 아닌가 생각이 들지만 나중에 JWT를 완성해보면 이해가 될것같다. 회원의 정보 TestUser는 다음과 같이 설계했다. TestUser를 UserDetails로 만들자. PrincipalDetails (UserDetails) package com.example.spotserver.config.auth; import com.example.spotserver.securityStud..

CorsConfig.java package com.example.spotserver.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class CorsConfig { @Bean public Co..