회원의 비밀번호를 그대로 저장한다면?
관리자가 모든 회원의 비밀번호를 알 수 있음
=> 보안취약점 발생
- form이 submit되었을 경우 join이라는 경로에 post 요청을 보낸다
- onsubmit 속성 안에 특정 자바스크립트 함수를 실행시키면 form이 실행되기 전에 자바스크립트를 우선 실행해줌(여기서는 check()함수의 결과를 return, 만약 check함수에서 false를 리턴하면 subit이 실행되지 않고 멈춤)
- 위에 있는 화면 구성하기와 비슷
- passport-local strategy는 config를 전달해줘야함
- usernameField와 같이 form 요청 값을 전달 받았을 때, LocalStrategy에 설정된 authenticator(?)(사진 오른쪽 부분)
가 실행- (오른쪽 부분) 이메일을 통해 회원을 검색(없다면 에러)
- passowrd를 hash값으로 만들어서 비교해줘야함
- done call back을 이용해 값을 전달
- done call back은 처음에 에러가 있다면 에러를 전달, 없다면 값을 전달
- auth('/') 요청이 들어 왔을 때 만들었던 local-strategy가 실행, 실행된 결과를 받아서 session에 저장해주는 기능까지 passport가 자동으로 해줌
- app.js 부분은 passport가 session을 사용하기 위한 설정들임
- passport가 session을 사용하기 위해 해주어야 하는 설정 중 하나
- logout 경로로 접근했을 때 req.logout() 실행
- 왼쪽은 Express App이 종료되면 세션도 같이 없어짐
- shortId로 유저를 검색해 없다면 No User, 있다면 Post 생성해서 author 객체 전달(title, content도)
- 게시글 find 할 때 populate를 해줘야 템플릿에서 작성자의 이름이나 이메일 등을 사용 가능
- find에 populate를 해줬기 때문에 밑에서 post.author.shortID 이렇게 사용 가능