프로젝트/팀 프로젝트

이전에는 시큐리티에서 사용하는 필터중 로그인을 담당하는 필터 UsernamePasswordAuthenticationFilter 를 새롭게 구성하여 내 입맛대로 만들어보는 과정을 거쳤다. 그래서 로그인이 되는 과정을 보았고 토큰을 받은 사용자는 이제 서버에게 무언가 요청을 할때마다 토큰을 검증하여 우리가 허락한 사람이 맞는지 확인하는 과정을 거치게 될것이다. 1. 검증을 하는 과정 사용자는 DB에 접촉하여 데이터를 가져와야 하는 경우에 서버에 요청을 할텐데 그때마다 AccessToken 이라는 것을 가져와야 하게 만들어주었다. 이것은 프론트 쪽의 상황이기 때문에 따로 서술하진 않겠다. 그럼 우리는 토큰을 보고 바로 오케이 통과 하는것이 아니라 토큰을 뜯어보고 정말로 내가 준것인지 확인하는 과정을 거쳐야 한..

이전에 작성되었던 내용은 토큰을 전달할 때 그리고 검증할 때 사용하기 위한 부품을 만들었다 그럼 이제 그것을 사용해 보자 물론 나는 로그인에 사용할 예정이다. 시큐리티의 로그인 시큐리티에서 기본적으로 제공하는 로그인 과정은 굉장히 복잡하다. 시큐리티는 굉장히 많은 필터를 거쳐서 사용자를 인증하고 인가하면서 진행을 하는데 그중 로그인과 가장 큰 관련이 있는 UsernamePasswordAuthenticationFilter에 대해서 조금만 알아보자 AntPathRequestMatcher 요청은 항상 URL을 보고 판단하게 되는데 이때 login 으로 시작하는 URL을 이 녀석이 잡는다고 생각하면 된다. 어쨌든 해당 URL 을 필터가 잡아야 진행이 시작된다. 만약 login 이 들어가지 않는다면 물론 다음 필..

현재 나의 블로그를 보면 security가 정리된것을 알수있다. 내가 security에서 얼마나 많은 삽질을 했는지 모를것이다. 그래서 나의 멍청한 길을 다시 돌아볼까 한다. 우리는 시큐리티의 기본값인 세션을 사용하지 않고 token 을 사용하기로 했다. 왜냐하면 보안적으로도 훌륭하고 이 당시의 나는 남들이 하는 것을 꼭 해보고 싶었기때문이다. 그래서 설정을 시작했다. 이때부터 난관에 봉착했는데 내가 찾아본 시큐리티의 예제는 현재는 deprecated 된 websecurityconfigureradapter 를 상속받아서 그 안에 있는 configure를 override 해서 사용했다. 물론 나는 그것을 몰랐고 그것을 한참 해맸다. 때문에 한참을 알아보았고 현재는 Bean 생성을 통해 만든다는 사실을 알았..

JWT 란? 우선 JWT 를 만들기 전에 이게 뭔지 부터 알고갈 필요가 있다. 해당 글을 보고 오자 https://latewalk.tistory.com/115 JWT 세션의 단점을 보안하기 위해 나온 Token들은 굉장히 다양하다. 우선 기본적으로 토큰은 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하면서 유효성 검사를 도와준다. 이러한 시스템에서는 latewalk.tistory.com JWT 설정 시작. 그리고 나는 이때까지 시큐리티를 제대로 공부하지 않았다는 티를 너무 많이 냈다. 왜냐하면 로그인을 따로 처리했기 때문이다. 시큐리티의 로그인을 끄고 로그인을 컨트롤러 단까지 받아서 내가 원하는대로 처리해버리고 로그인이 완료되면 JWT 토큰을 발급하는 방향으로 진행을 했던것이다. 지금 생각하면 굉장..

로그인을 만들때는 아이디가 있어야 하고 아이디를 만드려면 회원가입을 해야한다. 즉, 회원 가입을 먼저 만들겠다는 뜻이다. 우리는 메퍼로 DB에 사용자의 정보를 저장할것이다. 그렇다면 가장 먼저 해주어야 할 사용자의 정보를 저장하는 쿼리문을 짜고 그것을 자바에서 클래스로 사용할 수 있게 만들어야 한다. 1. 매퍼에 insert 쿼리문을 통해 사용자의 정보를 가입하기 위해 만들었다. 를 통해 멤버 컬럼들을 한번에 등록시키고 사용했다. 이런식으로 어떻게 저장할지 정했다. 1 - 1. 그후 이 singup 이라는 이름을 가진 매퍼와 자바 클래스에서 사용될 mapper 와 연결을 시켜주어야 한다. 그러면 이제 mapper 를 DI로 등록해서 사용할수 있는 상황이 된것이다. 그렇다면 우리는 서비스에서 이 메소드를 ..

우리는 본격적으로 시작했고 패키지를 짜는 과정에서 우리는 resource 에는 MyBatis 에 연결하는 mapper.xml 파일을 생성하고 xml 파일과 연결되는 mapper.java 파일또한 만들어 주었다 mapper.xml : 물론 MyBatis Mapper XML File로써 실행할 SQL 문을 정의해놓은 파일이다. SQL 문을 실행하기 위해 Parameter Object 를 받아오거나 SQL문 실행 결과를 Result Object에 자동 바인딩 한다. mapper.java : 해당 파일은 인터페이스로써 만들어진다. 우리가 XML 에 적어놓은 쿼리문과 바인딩되어 실제 SQL문이 처리가 되는 클래스를 자동으로 생성한다. Entity 와 DTO 의 역할분리 Entity : DB에 직접적으로 맡닿아있는..
협업 도구 . GIT 첫번쨰로 우리가 가장 중요시 한것은 형상관리 도구인 GIT 을 사용하는것이였다. 여러명이서 작업을 하고 그것을 다루기에는 GIT이 가장 편할것이라는 결론이 나왔다 그래서 우리는 GIT을 통한 협업을 진행하고자 했고 전체적인 브랜치를 다루는 방법은 다음과 같았다. 중심 브랜치 생성 master 라는 브랜치와 develop 의 브랜치를 생성하고 중간 단계 과정을 만들었다. master는 최종적으로 각자가 만든 프로젝트가 합쳐지고 오류가 없다고 판단되었을 경우에 올라가는 곳이다. 그렇다면 develop은 무엇일까? master 에 올라가기 전 합쳐보는 곳이다. 처음에야 큰 차이가 없겠지만 결과물이 쌓이다 보면 이런식으로 경계선을 그어 주는것이 좋다 develop 의 주의성 각자의 결과물을..
학원을 다니며 학원내에서 스터디를 시작했고 해당 스터디는 프로젝트를 함께하는 팀으로 변모되었다. 모두들 프로젝트를 할 생각이 있었고 우리는 바로 아이디어 회의를 들어갔고 그 결과 배달서비스를 만들어보자는 큰 꿈을 꾸게 되었다. 우리는 먼저 ERD를 생성했다. 그후 거기에 들어가야할 많은 데이터를 천천히 적어가면서 만들었고 모두다 경험이 없어서 생각보다 난항을 겪으며 매일같이 학원에 10시까지 남아가며 회의를 진행하였다. 내가 알던것보다 훨씬 더 많은 저장 내용이 필요했고 그것을 테이블로 지정해서 만드는것은 쉽지 않았다 그래서 우린 대략적으로 만들고 전체적인 틀을 잡고 세부적인것은 진행하면서 고치자는 의견이 나왔다 그후 우리는 각자 어떤 파트를 맡을 것인가에 대한 논의를 했고 내가 맡게 된것은 로그인이였다.