본문 바로가기
반응형

dev/backend7

Auth / logout (5) 이번시간을 마지막으로 Auth에 대한 내용을 모두 간단히 정리한다. 이전까지는 회원가입과 로그인, 로그인이 되어 있는 상태를 확인하는 거였다면, 오늘은 그렇게 로그인된 상태에서 로그아웃을 하는 방법에 대해 정리하려고 한다. 로그아웃을 하는 과정은 생각보다 단순하다. 이전에 만들어둔 middleware를 활용해 token를 통해 해당 user를 찾아서 token을 삭제하면 된다. 다음과 같은 과정을 통해 로그아웃이 된다. index.ts app.get('/api/users/logout', auth, (req: any, res: any) => { User.findOneAndUpdate({ _id: req.user.id }, { token: "" }, (err: Error, user: typeof User) .. 2022. 4. 6.
Auth (4) - Auth route 지난 시간을 통해 로그인 기능이 구현되어 우리가 로그인을 했다면 해당 user에게 Token를 jwt 통해서 부여했다. 그러면 그렇게 부여된 token를 활용해 어떻게 로그인이 된 상태인지를 확인할 수 있는가에 대해 이번시간 Auth route에 대해 얘기해보고 한다. Auth Route Auth Route이 필요한 이후는 페이지 이동 때마다 사용자의 정보가 필요한 경우가 있다. 이때 로그인이 되어 있는 user만이 이용할 수 있는 사이트인 경우, 상품을 등록하는 사업자, 이를 이용하는 이용자 등 서비스의 권한을 확인이 필요한 경우, 글을 작성할 수 있는 권한 등 다양한 경우에 사용자가 로그인이 되어있는지 등 다양한 경우에서 확인이 필요하다. 그 과정은 다음과 같다. 우선 api를 통해 user의 정보를.. 2022. 4. 5.
Auth / login (3) - JWT & cookie 이번 시간에는 지난시간에 register에 이어 login 기능을 만들어 볼 건데 과정은 다음과 같다. 이번 시간에 JWT를 통해 토큰을 생성하고 이를 쿠키에 저장하는 것까지 정리해보려고 한다. login index.ts // login app.post('/api/users/login', (req: Request, res: Response) => { // 요청된 이메일이 DB에 있는지 확인. 자체 findOne 메소드 활용 User.findOne({email: req.body.email}, (err:Error, user: typeof User) => { if (!user){ return res.json({ loginSuccess: false, message: "작성한 이메일에 해당하는 유저가 없습니다.".. 2022. 3. 30.
Auth / register (2) - bcrypt 사용자 비밀번호 관리 사용자의 비밀번호를 우리는 그대로 저장을 한다면 이를 고스란히 관리자가 볼 수 있으며, 만약 해킹이 된다면 모든 user 비밀번호를 그대로 악용할 수 있을 것이다. 우리는 이러한 상황에 대비해 Bcrpyt 활용해서 비밀번호를 hash하고 해시값을 비밀번호로 저장할 것이다. Bcrypt Bcrypt는 레인보우 테이블 공격 방지를 위해 솔트(Salt)를 통합한 적응형 함수 중 하나라고 한다. SHA 종류의 암호화는 GPU 연산에 유리한 32비트 논리 및 연산만 사용하기 때문에 GPU 연산을 이용한 공격(레인보우 테이블)에 취약하다고 한다. 그래서 Bcrypt 설계자는 Blowfish를 이용해 구현했다고 했다고 한다. 솔트라는 무작위 값을 통해 반복적인 연산에 대한 연산속도를 늦출 수 있.. 2022. 3. 23.
반응형