jpa 18

SpringbootSecurity/JWT 사용한 로그인(2)

이번 포스팅은 저번 포스팅과 연결돼 있습니다. 실제 로그인을 해보기전에 테스트를 해보면서 이해도를 올려보자 포스트맨으로 위와같이 요청을 할 때 아래 함수가 실행되는데 이때 request에 담겨있는 데이터가 어떻게 들어오는지 확인하기 위해서 테스트를 해본다. request에 담겨있는 username과 password가 들어온다. 근데 만약에 데이터를 json으로 보내면 어떻게될까? json형식의 데이터가 오는 것을 알 수 있다. 일반적으로 웹 브라우져에서만 로그인 요청이 오지는 않는다. 안드로이드나 자바스크립트로 json데이터를 주고받을 수도 있기 때문에 위 json데이터를 파싱 해보자 위와 같이 해주면 json데이터를 파싱 해주는데 파싱 된 데이터를 user오브젝트에 담았다. 이제 로그인 시도를 하기 위..

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT 사용한 로그인(1)

이번 포스팅은 저번 포스팅과 연결돼 있습니다. 저번에는 가장의 토큰을 JWT라고 가정을 하고 테스트를 해보았고 이제는 진짜 JWT를 구현해서 회원가입과 로그인을 진행하는 포스팅이 될 것 같습니다. 기본적으로 SpringbootSecurity서버는 Security를 통한 로그인과 회원가입이 이루어져야하기때문에 설정들을 다뤄줍니다. 왜 이렇게 하는지에 대한 내용은 자세한 내용은 이전 OAuth로그인포스팅에 자세히 나와있습니다. 왜 이렇게 하는지에 대한 설명은 이전 Seucurity포스팅에 다 담겨있습니다!. 그럼 위와같은 Service가 언제 동작을 하냐면 /login으로 요청이 들어오면 Service가 동작을 한다. 왜냐하면 SpringSecurity가 기본적인 login주소가 /login이기 때문이다. ..

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT임시 토큰 만들어서 테스트

이 포스팅은 저번 포스팅과 이어져 있습니다. 저번 포스팅에서 만들었던 MyFilter1에 다음과 같이 filter를 설정해 줬다 요청이 POST로 들어오면 동작을 하도록 해 주고 포스트맨으로 POST 요청을 해보자 그럼 이제 하나의 가정을 해보자 우리가 "cos"라는 토큰을 만들었다고 가정을하고 이 cos라는 토큰이 넘어오면 인증이 되도록하고 그게 아니면 더 이상 filter를 못 타게 해서 컨트롤러로 진입을 할 수 없도록 만들어 볼 것이다. 위와 같이 잘 동작하는 것을 볼 수 있다. dochain을 타지 못하면 프로세스가 종료되기 때문에 cos라는 토큰이 없으면 프로세스가 종료된다. 그럼 이 filter를 Security가 동작하기 전에 걸어야 가장 먼저 인증을 해낼 수가 있다. 위와 같이 Securi..

SpringbootSecurity 2021.09.28

SpringbootSecurity/JWT 프로젝트 세팅 (yml설정포함)

이제 드디어 JWT서버를 만들어보는 프로젝트를 만들어 본다. https://mvnrepository.com/ mvnrepository에서 JWT를 사용하기 편리하게 해주는 라이브러리를 다운로드한다. 이 라이브러리를 쓰면 base64로 인코딩 디코딩 작업과 HS256으로 암호화는 작업을 직접 해야 하는데 아주 간편하게 해 준다. 이 라이브러리까지 porm.xml에 추가해주면 기본적인 프로젝트 수정은 끝났다. yml설정 server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: ..

SpringbootSecurity 2021.09.07

SpringbootSecurity/Security권한처리/@EnableGlobalMethodSecurity처리

Security버전 1의 마지막이다. admin과 manager의 권한 처리를 해볼 것이다. 관리자와 매니저는 엄연히 다른 권한을 가져야 하기 때문에 일반 유저와 분리가 돼야 한다. 하지만 지금 role이 전부 USER로 잡혀있는 것을 확인할 수 있다. 이렇게 인증을 설 정해주면 user로 로그인하면 /user만 들어갈 수 있고 manager로 로그인하면 /manager는 들어갈 수 있는데 인증만으론 갈 수 없는 /admin페이지로는 갈 수 없다. admin은 권한이 필요하기 때문이다. admin으로 로그인하면 다 들어갈 수 있다. 특정 메서드 메서드 하나에만 권한 처리를 하는 방법 특정 메서드 하나만 권한 처리만 하고 싶은 경우에는 @EnableGlobalMethodSecurity를 사용해서 위 설정들..

SpringbootSecurity 2021.08.27

JPA Paging 구현 연습

게시글이 많아졌을 때 스클 롤이 길어지는 게 아니라 페이지로 넘어가도록 구현해보자 PageRequest객체 위오버로딩된 자료를 보면 page와 size를 적으면 된다라고 나와있는데 위 객체만 사용한다고 되지 않는다.. 이럴 땐 requestBody로 json데이터를 받아서 디버깅해 봐야 한다. 위 json데이터를 보면 어떻게 해야 할지 답이 보인다. 1.requestBody로 내부적으로 어떻게 데이터가 들어오는지 체크한다. 2. 데이터를 보고 어떻게 처리할지 정한다. 3.PageRequest객체 사용한다.

Springboot 2021.07.27

Spring boot/JPA /DB 기본 개념 테이블과 오브젝트(2){JPA의 ORM기술}

ORM 기술 jpa의 뜻은 java persistence API이다 persistence는 영속이란 뜻이다. 자바로 영구히 데이터를 저장할 수 있는 API라는 뜻이다. 영구히 데이터베이스에 저장할 수 있도록 함수를 제공해주는 것이다. jpa의 기반 기술은 hirebernate =>ORM(오브젝트 릴레이션 매핑) 기술을 사용한다 실습 일단 저번 포스팅에서 사용했던 테이블의 데이터를 다 날리고 새로 만들어 보자 기존에 있던 폴인키는 int 타입에 userId로 돼있었는데 그 폴인키를 지우고 위와 같이 코딩해줬다 위 주석은 중요한 내용이니 꼭 숙지해야 한다. 그리고 저장을하면 CREATE가 돼있기 때문에 테이블이 새로 생성되는데 위 주석처럼 jpa에서 자동으로 폴인키를 설정해준다. @ManyToOne을 알면 ..

Springboot 2021.07.01