목록분류 전체보기 (40)
helloworld
JWT? Json Web Token.. ?왜 사용되고 어디에 쓰는가.. web brower -> www.naver.com (get 방식) -> server .. 해당 주소에 맞는 컨트롤러의 메서드를 찾는다 -> 요청한 페이지에 맞는 html을 제공한다. header에 cookie에 session Id (ex: 1234) 담아서 준다. cookie : 1234 쿠키영역에 처음 요청시에 세션아이디가 담김 , 이후 요청시에는 다시 생성하는 것이 아닌 1234를 그대로 돌려준다. 서버에서는 세션목록을 갖고 있고, 웹에서 보여주는 세션아이디와 비교 한다(?) 세션이 사라질 때 1. 서버쪽에서 세션을 날려버림. 서버에 있는 세션목록을 지움.. 2. 사용자가 브라우저를 전부 종료. 종료시에 웹에 있는 쿠키(세션아이디..
프로젝트도 진행해야하는데 로그인에 시간이 엄청 간당.. 짰던 계획은 아마 물거품이 되려나.. JWT를 듣기 전에 웬만한 구조는 알고 있어야 할 거 같아서 스프링시큐리티부터 강의를 듣고 있는 중인데, Oauth 관련하여 굉장히 중요한 것 같은 내용이 나와서 정리하려 한다. 우선 스프링 시큐리티는 자기만의 시큐리티 세션을 가지고 있다고 한다. (원래의 세션 영역 안에 시큐리티가 관리하는 세션 영역) 이런식으로.. 참고로 S는 세션이고 S-S는 스프링 시큐리티다 그 안에 들어 갈 수 있는 타입은 Authentication 객체 뿐이고 DI를 통해 접근이 가능하다. Authentication 안에 들어 갈 수 있는 2개의 타입이 있는데 UserDetails/ OAuth2User 타입이다.. UserDetails..
로그인 기능을 고민을 해봤는데 아직 jwt나 spring security에 대해 사용을 해본 적이 없기에 jwt를 사용하기로 했다. 참 RestAPI를 개발할 때에는 jwt가 더 유리하다고 한다.. 아직 이에 대한 이해도가 제로이기 때문에 조금 찾아 보았는데 spring security도 세션을 사용하기에 jwt와 같이 소개되긴 하지만 엄연히 다르다곤 하다.. jwt는 내가 이해한게 맞나 싶긴 하지만 이해한 대로 적어보겠다.. 1. 클라이언트가 웹사이트에서 로그인 요청을 보낸다. 2. 서버에서 토큰을 생성한다, 클라이언트에게 다시 보낸다. 3. 클라이언트에서 토큰이 있나 확인 후, 토큰정보와 같이 요청을 한다. 4. 토큰을 검증 후 리턴한다. 이런 방식인 것 같다. 굉장히 머리가 아프다.. 세션의 경우 ..
테이블 생성 및 간단한 쿼리문 등은 JPA를 바탕으로 DB를 관리 할 것이다. 전 글에 포스팅한 설계한 DB를 바탕으로 도메인을 만들어 테이블을 생성해보자.. 우선 얽힌 것들이 적은 Member 테이블부터 만들 것이다. 우선 member로 디렉토리를 만든 후, 나는 mvc패턴 모델2방식으로 작업을 할 것이기 때문에 컨트롤러, 서비스, 리파지토리로 분류를 해놓았다. MVC2패턴이란 model과 view 단을 controller 단에서 연결하고 흐름을 제어하는 방식이다. 즉 model과 view 사이의 정보를 교환하는 방식이다. 그럼 model은 뭐고 view는 뭐냐면 view는 단어 자체에서 알 수 있듯이 보여지는 부분이다. 쉽게 말해 front단이라고 생각해도 될것 같다. html이나 jsp 같은것을 생..
우선 DB는 이렇게 설계를 해서 starUML로 ERD를 만들어보았는데 거의 처음만들어보는거라 쉽지 않았다.. 물론 하다보면 수정이 들어가긴 할거같은데 이걸 바탕으로 코드를 구성한다면 혼자 머릿속으로 짜는것보다 훨씬 쉽게 만들 수 있을거 같긴 하다. 수정이 된다면 그때그때 블로그에 수정본을 올려야 겠다.. 그나저나 프론트하는 친구 노트북에는 자바랑 오라클이 깔려있지 않은데 그거부터 도와줘야한다.. 자바를 만지던 친구가 아니라 나도 세팅환경 만드는거 다시 공부한다생각하고 열심히 으쌰으쌰해야겟당
프론트엔드 공부하는 친구와 프로젝트를 시작하게 되었다. 디자인부터 가능하다면 서버 배포까지하려고 한다. 펫프렌즈라는 어플을 보고 웹사이트를 만드려고 한다.. 프로젝트 요소로는 회원관리: 회원가입, 로그인, 로그아웃, 회원정보 수정 마이페이지: 주문내역, 구매후기, 포인트, 쿠폰함, 장바구니 채팅: 실시간 채팅 상담 ( 할수 있을지는 의문 ..) 상품목록: 사료, 간식, 용품 등 상세페이지 결제도 가능하다면 할 예정이다. 사용 언어는 프론트엔드 : html, css, javascript, react 백엔드 : java11, springboot, oracle, mybatis 협업: git, figma OS : window 가능한 깃 커밋메시지 규칙을 지키면서 커밋하고, 백엔드 단에서는 restful하게, j..
지금까지 User를 가지고 요리조리 만들어보았다. 이젠 간단한 메모장을 만들어보자 .. 간단히 Post 클래스에 id, description, user를 만들었다. 우선 만들기 전에 생각해야 할 것이 있다. 한명이 게시글 여러개를 만들수 있고, 한개만 만들 수도 있고, 만들지 않을 수도 있다. 즉 1: 0 or N 이다. 또한 게시글은 있지만 글쓴이는 없을 수가 없다. 이런 면에서는 부모자식 관계라고 해도 될것같다. 한줄로 표현하면 유저 : 게시글 - > 1 : 0~N - > Main : Sub -> Parents : Child 라고 생각하면 될 것 같다. @Data @Entity @AllArgsConstructor @NoArgsConstructor public class Post { @Id @Gener..
jpa가 확실히 쿼리문을 안적어도 되서 굉장히 작업량을 줄여주는 것 같다. 원래같으면 insert into table("","","","") values({id},{pwd},{~~~}) 이런식으로 해야하는데 이런 과정이 없어서 시간도 작업량도 엄청 줄여주는 것같다.. 뭐 암튼 저번에 포스팅햇던 상태코드제어하기를 같이 사용하여 @PostMapping("/users") public ResponseEntity createUser(@Valid @RequestBody User user) { User savedUser = userRepository.save(user); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .bu..
delete는 정말 쉽다... delete는 리턴 받을 것이 없기 때문에 물론 받게하려면 받을 수 있겠지만.. 우선 @DeleteMapping으로 시작한다. @DeleteMapping("/users/{id}") public void deleteUser(@PathVariable int id) { userRepository.deleteById(id); } 가변변수를 사용해야하기 때문에 pathvariable 을 사용해주고 jpa 메서드인 deleteById 하면 끝...
전 글에서는 모든 유저의 정보를 가져왔다. 이번엔 한 명의 유저 정보를 가져와보자.. jpa를 사용하기때문에 비슷비슷하다 .. 우선 restAPI를 하는 과정이기 때문에 @GetMapping("/users/{id}") 요청은 똑같다. 가변변수를 사용하기 때문에 파라미터를 받을 때에 @Pathvariable 어노테이션을 붙여준다. public EntityModel retrieveUser(@PathVariable int id) { Optional user = userRepository.findById(id); Optional이 붙은 이유와 EntityModel을 붙인 이유를 간단히 말하자면 저번에 포스팅했던 HATEOAS 기능을 사용하기 위해 EntityModel이 리턴값으로 붙었고 Optional은 안쓰면..