분류 전체보기

BackEnd/Express.js

[Node.js/Express.js] Session, Interceptor 기능 완성

[Node.js/Express.js] Session, Interceptor 기능 개발 이전까지 세션과 인터셉터를 모두 개발 완료했다. 이제 매 요청 전 세션만 체크해주면 된다. 일단 해당 기능 적용 전 이전 글에서 Request 객체에 세션과 관련된 함수를 추가해주는 기능을 인터셉터로 변경해줬다. SessionManagerInterceptor class SessionManagerInterceptor extends HandlerInterceptor { /** * @type {SessionFactory} */ #sessionFactory; /** * @param {SessionStore} store */ constructor(store) { super(); this.#sessionFactory = new S..

BackEnd/Express.js

[Node.js/Express.js] Interceptor 개발

[Node.js/Express.js] Session, Interceptor 기능 개발 지난 포스팅까지 세션 기능 개발을 완성했다. 요청이 왔을때, 서비스 로직을 수행하기 전 세션을 체크해서 권한이 있는 이용자의 요청인지 체크를 해주면 된다. 일전에 개발한 기존 세션기능은 모든 핸들러 함수 시작부분에 세션 Map을 뒤져 세션이 존재하는지 체크하는 로직을 일일이 넣어줬었다. 이번에 그런 수고를 줄이고자 인터셉터를 개발하기로 했다. HandlerInterceptor class HandlerInterceptor { /** * @param {Request} req * @param {Response} res * @return {boolean} */ preHandle = (req, res) => { return tr..

BackEnd/Express.js

[Node.js/Express.js] Session 구조 변경

[Node.js/Express.js] Session, Interceptor 기능 개발 지난번 개발한 세션의 구조적인 변경을 진행했다. 이유는 현재 사내 프레임워크는 config.js라는 object에 필요한 정보들(DB host, port 등 과 같은 정보들)을 필드로 가지게 하고, 필요한 곳에서 모듈로 가져와 참조하는 방식을 사용했다. 그 중 Redis client와 관련된 정보도 있었다. 문제는 여기서 발생한다. 나는 config.js에 어떤 세션 스토어를 사용할지 명시할 계획이었으므로 개발자가 레디스 스토어를 사용하게 된다면 config.js에 const config = { redis: { socket: { host: 127.0.0.1, port: 6379 } }, sessionStore: Redi..

BackEnd/Express.js

[Node.js/Express.js] Session 기능 - 쿠키 설정

[Node.js/Express.js] Session, Interceptor 기능 개발 Redis로 세션을 저장하는 기능을 구현했지만, 흐름상 쿠키에 세션 key를 담아줄 경우 프록시서 버에서 쿠키를 탈취해 해당 key로 요청을 날리는건 마찬가지라는 생각을 했다. 요즘 JWT 같은 방법으로 인증관리를 구현한다고 알고있지만 아직 내가 잘 알지 못하고, 회사 분위기도 해오던 방법을 거스르는것에 반감이 있다보니 세션을 유지하고자 했다. JWT에 대해 알아볼때 봤던것이 쿠키에 httpOnly옵션을 줘서 클라이언트에서만 쿠키에 접근할 수 있도록 한다는 것을 참고해서 내가 구현한 세션/쿠키 방식에도 httpOnly 옵션을 추가하기로 했다. 쿠키 옵션 추가 기존 RedisSessionStore - geSession()..

BackEnd/Express.js

[Node.js/Express.js] Session, Interceptor 기능 개발 - RedisSession, MemorySession

[Node.js/Express.js] Session, Interceptor 기능 개발 HttpSession class class HttpSession { /** * @type { Map } */ #map #id constructor(id, map) { this.#map = new Map(); if (id) this.#id = id; if (map) this.#map = map; } /** * @param { string } name * @return { any } */ getAttribute = (name) => { return this.#map.get(name); } /** * @param { string } name * @param { any } attr * @return { void} */ setA..

BackEnd/Express.js

[Node.js/Express.js] Session, Interceptor 기능 개발 - 설계

[Node.js/Express.js] Session, Interceptor 기능 개발 입사 하자마자 진행했던 프로젝트인 paperless 회진 앱의 보안 점검 결과로 여러 문제점을 지적 당했다. 크게 앱 단계의 문제와 서버 단계의 문제로 나눌 수 있었는데, 서버쪽에 세션 미적용 SQL Injection 문제가 있었다. 이중 세션은 사실 JS의 Map변수를 이용해 로그인 하는 시점에 생성, setTimeout()을 통해 30분 후 해당 세션 삭제와 매 요청시 setTimeout()의 key값으로 clearTimeout()을 호출하고, 다시 30분 시작을 하도록 구현했었다. 테스트시에는 문제가 없었지만, 실제 서버에 올려보니 30분이 되지 않았는데 세션이 삭제되는 등 많은 문제가 있었다. 개발 당시에는 내가..

Android

[Android/ScrollPager] 라이브러리 배포중 생긴 문제와 해결

이전에 올린 안드로이드 라이브러리 배포에 대한 포스팅을 올렸다. 당연하게 인터넷에 주로 포스팅되어있는 방법대로 진행했으니 문제가 없을거라 생각했다. 하지만 역시 개발이란 생각대로 되는게 없었고......... 잘 배포가 됐나 확인을 안한채로 신나서 블로그 포스팅을 올려버린게 화근이었다. 라이브러리 의존성을 주입하고 내가만든 ScrollPager 레이아웃을 추가하려는데 보이지가 않는것이었다. 그래서 gradle sync 과정에서 문제가 생겼다 보고 로그를 확인해보니 이런 로그가 남아있었다..... 뭐가 문젠지 도저히 감이 안잡혀서 검색과 다시 만들어서 배포하고를 수없이 반복해서 놓친부분을 찾았다. 이 블로그에서 jitpack에 올리면 로그 아이콘이 남는데 빨간 아이콘은 라이브러리에 문제가 있는것이라 한다...

Android

[Android/ScrollPager] 라이브러리 배포

삼성서울병원의 회진용 태블릿 앱 개발중 진료과별 기본 이미지 업로드를 위해 상하 스크롤처럼 동작하지만, 스크롤을 막아두고 버튼을 누르면 페이지 이동이 되는거처럼 보이는 레이아웃를 만든적이 있다. 예시를 들기엔 생각이 잘 나지 않지만 회원가입에서 이런식의 레이아웃을 본적이 있는거 같았다. 꼭 이전 절차를 해야 다음으로 넘어가는 그런 느낌? 앱 개발을 끝낸 후 그 레이아웃을 라이브러리로 Github에 올렸었다. 대단하진 않지만 언젠간 배포도 하고 기능 업데이트를 해야지 생각만 하고 미루다 드디어 시도했다. 작동 일단 작동 방식은 다음과 같다 ViewGroup으로 ScrollPager를 넣고 그 안에 자식 View들을 넣은 다음, ScrollPager의 함수인 scrollToView()를 호출하면 해당 Vie..

일상

인하공업전문대학 강의 후기

지난 22.10.28. 금요일에 인하공업전문대 공간정보 빅데이터과를 다녀왔다. 내가 졸업할때까지만 해도 항공지리정보과였는데 어느새 과명이 바뀌어있었다. 학교를 다녀온 이유는 학과 개발 동아리를 방문해 1년동안 개발자로 일한 나의 이야기를 전해주기 위해서였다. 처음 학교에 방문하겠다고 말씀드렸더니 교수님께서는 근무하고있는 직장과 내가 나온 국비 교육기관인 공간정보 아카데미에 대해 간단히 소개해주면 좋겠다 하셨는데, 오지랖이 발동해서 하고싶은 이야기 조금 더 하겠다고 했다ㅎㅎ 사실 내용만 보면 '이런 얘기를 해주러 거기까지 간거야?' 싶지만 역시 컴퓨터완 무관한 전공이며 2년이란 짧은 학교생활 때문인지 깃헙 계정이 있는 학생이 한명밖에 없을정도로 이쪽엔 무지했다.(그마저도 계정만 존재...) 나는 아직 성공..

일상

점핏 4차 개취콘 - 비전공자, 개발자 취업 A to Z 후기

10/11 홍대 한빛미디어에서 열린 점핏 4차 개취콘에 다녀왔다. 비전공자, 개발자 취업 A to Z라는 타이틀로 카카오 모빌리티 파트장 조현영(a.k.a 판교 제로초)님의 북콘서트였다. 타이틀에 맞게 오프라인 행사장은 나를 포함해 모두 비전공자만 참석 기회를 받을 수 있었다. 취업 준비를 어떻게 해야할지, 개발자로 일하면서 어려운점을 어떻게 극복했는지 등 좋은말씀을 많이 해주셨는데 한시간이라는 짧은 시간이 너무 아쉬웠다. 난 지금 비전공자 출신으로 이미 SI기업에 취업했지만 여느 SI 개발자처럼(?) 이직을 해야겠다는 생각을 크게 받은 후 이직 준비에 도움을 받고자 이번 개취콘을 신청했다. 많은 개발자 분들을 보면서 느끼지만 확실히 전공은 크게 중요하진 않은거 같다. 하지만 지금 유명한/인정받는 개발자..

djawnstj
'분류 전체보기' 카테고리의 글 목록 (3 Page)