๐งฉ ์ ์ฉ์์
# encode
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
# decode
user = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
๐งฉ ์ ์ฉ์์
article['comments'] = json.loads(dumps(comments))
โdecorator ๋?
decorator๋ฅผ ํ๋ง๋๋ก ์๊ธฐํ์๋ฉด,ย ๋์ ํจ์๋ฅผ wrapping ํ๊ณ , ์ด wrapping ๋ ํจ์์ ์๋ค์ย ์ถ๊ฐ์ ์ผ๋ก ๊พธ๋ฉฐ์ง ๊ตฌ๋ฌธ ๋ค์ ์ ์ํด์ ์์ฝ๊ฒ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๋ฉ์ธ ๊ตฌ๋ฌธ์ด ์๊ณ , ์ฌ๊ธฐ์ย ย ๋ถ๊ฐ์ ์ธ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๊ณ ์ถ์๋ ๋๋ ์ด ๋ถ๊ฐ์ ์ธ ๊ตฌ๋ฌธ์ ๋ฐ๋ณตํด์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ ๋ถ๊ฐ์ ์ธ/๋ฐ๋ณต์ ์ธ ์์ ์ decorator ๋ก ์ ์ธํด์ ์์ ๋กญ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
๐งฉ ์ ์ฉ์์
# authorizeํจ์๋ฅผ ์ ์ํ๊ณ
def authorize(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not 'Authorization' in request.headers:
abort(401)
token = request.headers['Authorization']
try:
user = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
except:
abort(401)
return f(user, *args, **kwargs)
return decorated_function
# @authorize๋ฅผ ํ์ฉํด ๋ฐ๋ณตํจ์๋ฅผ ํ์ฉ
@app.route("/")
@authorize
def hello_world(user):
print(user)
return jsonify({'message': 'success'})
์ด์ ์ ์ด์ด์ ์ค๋๋ ๊ฑฐ๋ถ์ด๋ฐ ๊ฐ์ ๋ณต์ต์ ํ๋ค.
ํ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ง๋๋๋ฐ ์๋ง์ ๊ธฐ๋ฅ๋ค๊ณผ ๋ ๊ทธ์ ํ์ํ ์๋ง์ ๋ณ์๋ค์ ๋ง๋ค๊ณ ๋ณด๋ ๋จธ๋ฆฌ๊ฐ ์ด์งํ๋ค. ๋ณ์๋ช
๊ณผ class๋ช
์ด์ค์ํ๋ค๋ ์ด์ ๋ฅผ ํ์คํ ์ ์ ์์๋ค. ๋ณ์๋ช
์ ๋ํผ์๋ง ์์์๊ฒ ์ง๊ธฐ๋ ์ด๋ ค์ด๋ฐ ๋ด ์ฝ๋๋ฅผ ๋ณด๋ ๋ค๋ฅธ ์ฌ๋์ ์ดํด๋ฅผ ์ ํ ์์์๊น? ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์์ผ๋ก ๋ณ์๋ช
์ด๋ class๋ช
๋ฑ์ ์ ์ง๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
๐ ์์ธํ ์ฝ๋๋ Moonmoo ์ ๊ฒ์ํ์ต๋๋ค
์ ๋ณด๊ณ ๊ฐ๋๋ค~~ ์ธ์ ์ด๋ ๊ฒ ๋ง์ด ์ฐ์ จ๋์ ^^