[TIL]201029 Shortly express

Chaegyeom·2020년 11월 6일
0

TIL

목록 보기
58/77
post-thumbnail

shortly express

이번 스프린트는 short.ly MVC와 인증(Authentication)이 합쳐진 스프린트로 이전에는 set-cookie로 생성했던 쿠기를 express미들웨어를 통해서 실습해 봤다.

각 기능별로 나누어 기능을 구현했는데 오늘 구현해본 기능은 로근인 기능인 signin과 로그아웃 기능인 signout 그리고 session을 이용해서 데이터베이스를 검색하여 정보를 제공하는 info 기능을 구현했다.

signin(로그인)

이메일과 패스워드를 받아서 데이터베이스에 있는 정보를 확인한 후에 session에 id값을 담아주는 기능을 구현해야 하는데
이전에 shortly MVC에서는 writeHead에서 set-cookie로 했었지만 이번 스프린트에서는 express-session미들웨어를 통해서 구현했다.

보안을 위해서 데이터베이스에 회원정보를 생성할 때와 회원정보를 조회할 때 hash함수를 통해서 보안성을 강화하기 위해 sequelize cli중 hooks통해 beforeCreate, beforeFind기능을 통해 비밀번호가 암호화 될 수 있도록 구현했다.

signout(로그아웃)

로그아웃 자체는 찾기는 어려웠지만 구현은 크게 어렵지 않았는데 session을 없애서 해당 로그인 정보가 남아있지 않도록 하면 되기 때문에 destroy()메소드를 통해서 session을 삭제해주고 초기 페이지로 redirect해주는 것으로 기능을 구현할 수 있었다.

info

로그인한 유저의 session을 이용해서 데이터베이스에 있는 정보를 제공하는 기능을 구현하는 것이었는데 sequelize cli의 findAll메소드를 통해서 로그인 할 때 session에 담아줬던 id값을 조건으로 검색해서 반환해주는 것으로 기능을 구현할 수 있었다.

signup

조금 일찍 끝나서 회원가입 기능도 구현을 해봤는데
request로 받은 값들을 findOrCreate메소드를 통해서 데이터베이스에서 검색하고 해당 정보가 존재하지 않으면 생성해서 회원가입을 구현할 수 있었다.

users.findOrCreate({
			where: { username, email },
			defaults: {
				email,
				username,
				password,
			},
		})

findOrCreate메소드는 where절에 대해서 검색해서 있는 경우에는 데이터베이스에 삽입하지 않고 없는 경우에는 defaults에 있는 값들을 삽입하는데
위코드로 보자면 생성을 하기 전에 usernameemail을 검색해서 같은데이터가 있는 경우에는 데이터를 삽입하지 않고 같은 데이터가 없는 경우에는 defaults에 있는 email, username, password를 데이터베이스에 삽입하는 메소드이다.

처음 사용할 때는 defaults가 대체 무슨 소리인가 했는데 데이터베이스에 생성되는 걸 본 후에야 이해할 수 있게 됐다.

사실 회원가입은 고급 과정이라 건드려 볼 수도 없을 줄 알았는데 이번 기회에 해보게 되어서 뿌듯하다

profile
주니어 개발자가 되고싶은

0개의 댓글