|
4 | 4 | :copyright: © 2020 by the Lin team. |
5 | 5 | :license: MIT, see LICENSE for more details. |
6 | 6 | """ |
| 7 | +import jwt |
7 | 8 | from flask import Blueprint, current_app, g, request |
8 | 9 | from flask_jwt_extended import ( |
9 | 10 | create_access_token, |
|
12 | 13 | get_jwt_identity, |
13 | 14 | verify_jwt_in_request, |
14 | 15 | ) |
15 | | -from itsdangerous import JSONWebSignatureSerializer as JWSSerializer |
16 | 16 | from lin import ( |
17 | 17 | DocResponse, |
18 | 18 | Duplicated, |
@@ -100,8 +100,7 @@ def login(json: LoginSchema): |
100 | 100 | if current_app.config.get("LOGIN_CAPTCHA"): |
101 | 101 | tag = request.headers.get("tag") |
102 | 102 | secret_key = current_app.config.get("SECRET_KEY") |
103 | | - serializer = JWSSerializer(secret_key) |
104 | | - if g.captcha != serializer.loads(tag): |
| 103 | + if g.captcha != jwt.decode(tag, secret_key, algorithms=["HS256"]).get("code"): |
105 | 104 | raise Failed("验证码校验失败") # type: ignore |
106 | 105 |
|
107 | 106 | user = manager.user_model.verify(g.username, g.password) |
@@ -251,6 +250,5 @@ def get_captcha(): |
251 | 250 | return CaptchaSchema() # type: ignore |
252 | 251 | image, code = CaptchaTool().get_verify_code() |
253 | 252 | secret_key = current_app.config.get("SECRET_KEY") |
254 | | - serializer = JWSSerializer(secret_key) |
255 | | - tag = serializer.dumps(code) |
| 253 | + tag = jwt.encode({"code": code}, secret_key, algorithm="HS256") |
256 | 254 | return {"tag": tag, "image": image} |
0 commit comments