2019. 11. 6. 15:01ㆍ카테고리 없음
※개인 학습 블로그 입니다.※
※ajax 에 대하여 포이마웹 참고 ※
토큰 인증 - stateless 서버
토큰 사용X - stateful 서버
토큰 발급과 로그인 유지는 별개?
try-catch // new promise 비교
쿠키 , 토큰
토큰 => 헤더에 담아 전송
set cookie?
fetch('/users', {
credentials: 'same-origin'
})
쿠키 자동저장인지
credential 옵션
cors/ header 옵션 설정
why cannot save cookie
검색어 + best practice / anti-pattern
=======================================초기 고려사항 ==============
cookie 사용
공부해야 할 사항들
- ajax?
- cookie-parser
- 쿠키를 사용하기 위한 기본적 설정들 ( header, cors 설정 )
- 모든 도메인에 대하여 cors 허용 X
ajax 요청에서 cookie를 저장하기 위해서는 response 헤더의 Access-Control-Allow-Origin 설정이
와일드카드( * )이면 안된다. 특정 도메인에서만 cors접근을 허용해야 함.
- credential : true (include) 옵션에 대하여
옵션 적용의 위치??? - credential 옵션의 header 관련 위치
Access-Control-Allow-Credentials : true 에 대하여 ( cors 설정 형태 )
- postman 에서는 쿠키가 적용됐던 이유는?
브라우저로 인식하지 않기 때문에 ajax요청이 아니어서 Access-Control-Allow-Origin가 *
임에도 작동을 했을 것.
- httpOnly 옵션?
브라우저상에서 javascript로의 접근을 막기 위함?
====================================================================
- node fetch? window fetch? axios?
- proxy ? 서버와 클라이언트의 도메인을 같은 경로로 인식 하도록 fake
jwt 토큰 - 쿠키생성과 토큰 전송
// 쿠키생성, jwt 토큰 전송
signin: async function (req, res) {
// console.dir(req.headers);
try {
let signinData = {
email: req.body.email,
password: req.body.password
};
let equality = await usermodels.signin(signinData);
if (equality) {
jwt.sign({ signinData }, "secretkey", { expiresIn: "30s" }, (err, token) => {
// jwt.sign 메소드가 비동기적으로 작동하는 것을 console로 확인하여
promise로 반환함.
return new Promise((resolve, reject) => {
if (err) {
return reject(err);
}
else {
return resolve(token);
}
}).then(data => {
console.log("data::::", data)
res.cookie("token", data, { httpOnly: true })
//쿠키생성, 토큰(data)담아서 res 전송.
console.log("make cookie!");
res.sendStatus(200);
}).catch(err => {
if (err) {
res.sendStatus(500);
}
})
})
}
} catch (err) {
res.sendStatus(500);
}
}