1์ฐจ ํ๋ก์ ํธ ๋ ์๊ฐ์ด ๊ธธ์ง ์์๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ ์๊ฐํ์ง ์๊ณ ๋ชฉํ๋ก ํ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ์ ๊ฒฝ์ผ๋ค. 2์ฐจ ํ๋ก์ ํธ๊ฐ ์์๋๊ณ ์ธ์ฆ๋ก์ง์ ๊ตฌํ๋์์ผ๋ ์ด์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์ธ์ฆ์ ์ถ๊ฐํด์ผ ํ๋ค.
์ค๋ ๋ชฉํ๋ก ํ ์ธ์ฆ๊ด๋ จ ์ด์๋ ์๋์ ๊ฐ๋ค.
JWT ํ ํฐ
๋ฐฉ์์ ์ธ์ฆ์ ์ฌ์ฉ ์ค์ด๊ณ ํ ํฐ์ ์ฟ ํค์ ๋ด์์ ๊ด๋ฆฌํ๋ ์ํ์ด๋ค. ๋ฐ๋ผ์ ์๋ฒ์์ ์์ฒญ์ ๋ํ ๊ถํ์ ๊ฒ์ฆํ๋ ค๋ฉด ์ฟ ํค๋ฅผ ํ์ธํด์ผ ํ๋ค.
ํ๋ผ๋ฏธํฐ๋ก ์ฟ ํค์ ๋ด๊ธด token์ด ์ ๋ฌ๋๋ค. ์ ๋ฌ๋ ํ ํฐ์ ํ์ด๋ก๋ ๋ถ๋ถ์ด ํ์ํ๋ฏ๋ก decode
๋ฅผ ์ํํ๊ณ ํ์ด๋ก๋์ user_id
๊ฐ ์ ํจํ user_id
์ธ์ง ํ์ธํ๋ ๊ฒ์ผ๋ก ํ ํฐ์ ๊ฒ์ฆํ๋ค. ํ ํฐ ๊ฒ์ฆ ๋ก์ง์ ์ดํ ์ ๋๋ก ๋ค์ ์๊ฐํด๋ณผ ์์ ์ด๋ค. (์์ !!)
# ํ ํฐ ๊ฒ์ฆ ๋ฉ์๋
def verify_token(mytoken):
# ์ธ์ฝ๋ฉ๋ ํ ํฐ์ payload ๋ถ๋ถ ๋์ฝ๋ฉ
token = jwt.decode(mytoken, jwt_secret, algorithms=['HS256'])
# ๋์ฝ๋ฉ๋ payload์ user_id๊ฐ users DB์ ์๋์ง ํ์ธ
user = db.users.find_one({'user_id': token['user_id']}, {'_id': False})
return user
์๊ตฌ์ฌํญ์ ์ ๋ฆฌํด๋ณด์.
์ฆ๊ฒจ์ฐพ๊ธฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ DB(์ปฌ๋ ์
)
์ด user_id
๋ฅผ ๊ฐ์ง๋ค๋ฉด ๋ชจ๋ ๊ฒ ํด๊ฒฐ๋๋ค. ์ง๊ธ ์๊ฐํ๋ ๋น์ฐํ๊ฑด๋ฐ ์ฐธ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค..
ํ๋์ฉ ๋ก์ง์ ๊ฒ์ฆํด๋ณด์.
1. ์์ ์ด ์ถ๊ฐํ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ง ๋ณผ ์ ์์ด์ผ ํ๋ค.
์ฆ๊ฒจ์ฐพ๊ธฐ ์กฐํ API
ํธ์ถ์ ํ ํฐ๊ฒ์ฆ์ ์ํด ์ฟ ํค์์ ๊ฒฐ๊ณผ์ ์ผ๋ก user_id
๋ฅผ ๊บผ๋ด์ฌ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ๊บผ๋ด์จ user_id
๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ ์ปฌ๋ ์
์ ์กฐํํ๋ค. ์ฆ๊ฒจ์ฐพ๊ธฐ ์ปฌ๋ ์
์๋ ๋ฑ๋ก์ user_id
๋ฅผ ๊ฐ๊ณ ์์ผ๋ฏ๋ก ์์ ์ด ์ถ๊ฐํ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ง ์กฐํ ๊ฐ๋ฅํ๋ค.
2. ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ถ๊ฐํ ํด๋ผ์ด์ธํธ๋ง ํด๋น ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ญ์ ํ ์ ์์ด์ผ ํ๋ค.
์ฆ๊ฒจ์ฐพ๊ธฐ ์ญ์ API
ํธ์ถ์ ํ ํฐ๊ฒ์ฆ์ ํตํด ์ป์ user_id
์ ์ญ์ ํ๊ณ ์ ํ๋ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ก ๋ฑ๋ก๋ ๋ฒ์์ ID
๋ฅผ ์กฐ๊ฑด์ผ๋ก delete_one
๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ญ์ ํ๋ค.
3. ์ด๋ค ํด๋ผ์ด์ธํธ๊ฐ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ถ๊ฐํ๋์ง ์์์ผ ํ๋ค.
์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ API
ํธ์ถ์ ํ ํฐ๊ฒ์ฆ์ ํตํด ์ป์ user_id
๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ ์ปฌ๋ ์
์ ์ถ๊ฐํ๋๋ Document
์ ์ถ๊ฐํ๋ค.
ํฌ๊ฒ ์ด๋ ต์ง ์์ ๋ฌธ์ ์ธ๋ฐ ๊น๊ฒ ์๊ฐํ์ง ์๊ณ ๋๋ธ ์ฝ๋ฉ๋ถํฐ ์์ํด์ ์ค๋ ๊ฑธ๋ ธ๋ค.. ํ ๊ฐ ๋ก์ง์ ๊ตฌํํ ๋ ์ด๋ ์ ๋ ํฐ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋๊ณ ์์ํด์ผ๊ฒ ๋ค.
์ฆ๊ฒจ์ฐพ๊ธฐ API์ ์ธ์ฆ ์ถ๊ฐ ๊ตฌํ์ ์ถ๊ฐ๋ก ์๊ฒ๋ mongoDB
๊ด๋ จ ๊ธฐ์ ์ด๋ค.
์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ์ ๋ฑ๋ก๋ ๋ฒ์์ ID
๋ฅผ user ์ปฌ๋ ์
์ชฝ์๋ ์ถ๊ฐํด์ค์ผ ํ๋ค๊ณ ์๊ฐ๋์ด์ ๊ตฌํํ๋ ค๋๋ฐ ๋ฑ ๋งํ๋ ๋ถ๋ถ์ด ์์๋ค.
{
...,
bookmarks: [
bookmark_id1, bookmark_id2
],
...
}
์ ํฌ๋ฉง์ผ๋ก Document๋ฅผ ๊ตฌ์ฑํ์ ๋ bookmars
์ ๊ฐ์ด ๋ฆฌ์คํธ([]
) ํํ์ธ๋ฐ ๋ฆฌ์คํธ์ ๊ฐ์ ์ถ๊ฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ๋๋๊ฐ ๋ผ๋ ๋ถ๋ถ์ด์๋ค.
๋ด๊ฐ ์ฐพ์ ๋ต์ $push
์ด๋ค.
bookmarks
๋ฆฌ์คํธ์ law_id
๋ฅผ append
ํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
db.users.update (
{'์กฐ๊ฑดkey':'์กฐ๊ฑดvalue'},
{'$push':{'bookmarks':law_id}}
)
๋๋ฒ์งธ๋ ๋ฐ๋์ ์ํฉ์ด๋ค bookmarks
๋ฆฌ์คํธ์์ ๊ฐ์ ์ญ์ ๋ ๊ฒ์ด๋ค.
๋ต์ $unset
์ด๋ค.
bookmarks
๋ฆฌ์คํธ์ law_id
๋ฅผ ์ญ์ ํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
db.users.update(
{'์กฐ๊ฑดkey':'์กฐ๊ฑดvalue'},
{'$unset': {'bookmark_id':law_id}}
)
mongoDB
์ ๋ํด ๊น๊ฒ ์๋ ์ํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ Document
์ ์ค๊ณ๊ฐ ์ ๋๋ก ๋์๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ํ์ง๋ง NoSQL์ด๊ณ ์์ง ๊ฐ๋ฐ๋จ๊ณ์ด๋ฏ๋ก ์ธ์ ๋ ๋ณ๊ฒฝ๊ฐ๋ฅํ๋ค ใ
์ผ๋จ ์ ์ง๋ฌ๋ณด๊ณ ๋ํ
์ผ์ ํ๋ฐ๋ถ์์ ์ฑ๊ฒจ๋ณด์ ใ