Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
travel
Commits
775d915f
Commit
775d915f
authored
Jul 07, 2022
by
Yoon, Daeki
😅
Browse files
비밀번호 암호화를 db쪽에서 처리하는 것으로 변경
parent
00ee89c5
Changes
2
Show whitespace changes
Inline
Side-by-side
src/controllers/auth.controller.ts
View file @
775d915f
...
@@ -25,15 +25,17 @@ export const login = asyncWrap(async (req, res) => {
...
@@ -25,15 +25,17 @@ export const login = asyncWrap(async (req, res) => {
return
res
.
status
(
401
).
send
(
"
잘못된 비밀번호를 입력하셨습니다
"
);
return
res
.
status
(
401
).
send
(
"
잘못된 비밀번호를 입력하셨습니다
"
);
}
}
// 3) 비밀번호가 맞으면 토큰 생성
// 3) 비밀번호가 맞으면 토큰 생성
const
token
=
jwt
.
sign
({
userId
:
user
.
id
},
jwtCofig
.
secret
,
{
//userId를 토큰에다 넣는 중.
const
token
=
jwt
.
sign
({
userId
:
user
.
id
},
jwtCofig
.
secret
,
{
//userId를 토큰에다 넣는 중.
expiresIn
:
jwtCofig
.
expires
,
expiresIn
:
jwtCofig
.
expires
,
});
});
// 4) 토큰을 쿠키에 저장
// 4) 토큰을 쿠키에 저장
res
.
cookie
(
cookieConfig
.
name
,
token
,
{
//token은 쿠키에 무엇을 실렸는가 이다. 항상 갖고 있다가 홈페이지 들어가면 서버로 접속
res
.
cookie
(
cookieConfig
.
name
,
token
,
{
maxAge
:
cookieConfig
.
maxAge
,
// 이 기간 한에서만 유효
//token은 쿠키에 무엇을 실렸는가 이다. 항상 갖고 있다가 홈페이지 들어가면 서버로 접속
path
:
"
/
"
,
//어떠한 경로에 관해서만 쓴다. 지금은 전부에 쓴다.
maxAge
:
cookieConfig
.
maxAge
,
// 이 기간 내에서만 유효
httpOnly
:
envConfig
.
mode
===
"
production
"
,
//false 면 브라우저에서 쿠키를 조작, true면 조작할 수 있다.
path
:
"
/
"
,
//어떠한 경로에 관해서만 쓴다. 지금은 전부에 쓴다.
secure
:
envConfig
.
mode
===
"
production
"
,
//true 면 https 를 통해서만 쿠키 전달, false면
httpOnly
:
envConfig
.
mode
===
"
production
"
,
//false면 브라우저에서 쿠키를 조작, true면 조작할 수 없다.
secure
:
envConfig
.
mode
===
"
production
"
,
//true 면 https를 통해서만 쿠키 전달, false면
});
});
// 5) 사용자 반환
// 5) 사용자 반환
res
.
json
({
res
.
json
({
...
@@ -59,7 +61,7 @@ export const requireLogin = asyncWrap(async (reqExp, res, next) => {
...
@@ -59,7 +61,7 @@ export const requireLogin = asyncWrap(async (reqExp, res, next) => {
const
decodedUser
=
jwt
.
verify
(
token
,
jwtCofig
.
secret
);
// 아까보낸 토근을 디코딩중.
const
decodedUser
=
jwt
.
verify
(
token
,
jwtCofig
.
secret
);
// 아까보낸 토근을 디코딩중.
// 3) 요청 객체에 토큰 사용자 객체 추가
// 3) 요청 객체에 토큰 사용자 객체 추가
req
.
auth
=
decodedUser
;
req
.
auth
=
decodedUser
;
next
();
// 에러가 안나오면 next 사용, 나오면 catch쪽으로.
next
();
// 에러가 안나오면 next 사용, 나오면 catch쪽으로.
}
catch
(
error
)
{
}
catch
(
error
)
{
res
.
clearCookie
(
cookieConfig
.
name
);
res
.
clearCookie
(
cookieConfig
.
name
);
console
.
log
(
"
error in requreLogin===
\n
"
,
error
);
console
.
log
(
"
error in requreLogin===
\n
"
,
error
);
...
@@ -84,13 +86,12 @@ export const signup = asyncWrap(async (req, res) => {
...
@@ -84,13 +86,12 @@ export const signup = asyncWrap(async (req, res) => {
if
(
userExist
)
{
if
(
userExist
)
{
return
res
.
status
(
422
).
send
(
`
${
email
}
사용자가 이미 존재합니다`
);
return
res
.
status
(
422
).
send
(
`
${
email
}
사용자가 이미 존재합니다`
);
}
}
// 3) 비밀번호 암호화
// 3) 비밀번호 암호화는 useDb.createUser에서 처리
const
hash
=
await
bcrypt
.
hash
(
password
,
10
);
// 4) 새로운 사용자 만들기
// 4) 새로운 사용자 만들기
const
newUser
=
await
userDb
.
createUser
({
const
newUser
=
await
userDb
.
createUser
({
email
,
email
,
password
:
hash
,
password
,
});
});
// 5) 사용자 반환
// 5) 사용자 반환
(내부적으로 몽구스가 toJSON() 호출)
res
.
json
(
newUser
);
res
.
json
(
newUser
);
});
});
src/db/user.db.ts
View file @
775d915f
import
bcrypt
from
"
bcryptjs
"
;
import
{
IUser
,
User
}
from
"
../models
"
;
import
{
IUser
,
User
}
from
"
../models
"
;
export
const
createUser
=
async
(
user
:
IUser
)
=>
{
export
const
createUser
=
async
(
user
:
IUser
)
=>
{
const
newUser
=
await
User
.
create
(
user
);
// 비밀번호 암호화
const
hash
=
await
bcrypt
.
hash
(
user
.
password
,
10
);
const
newUser
=
await
User
.
create
({
email
:
user
.
email
,
password
:
hash
});
return
newUser
;
return
newUser
;
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment