Bladeren bron

no message

libushang 1 maand geleden
bovenliggende
commit
860ff770cd
4 gewijzigde bestanden met toevoegingen van 24 en 7 verwijderingen
  1. 14 1
      common/security.py
  2. 2 0
      jobs/__init__.py
  3. 6 4
      routers/prod_api/auth.py
  4. 2 2
      utils/ase_utils.py

+ 14 - 1
common/security.py

@@ -86,4 +86,17 @@ def create_access_token(*, data: dict, expires_delta: timedelta = None):
         expire = datetime.utcnow() + timedelta(minutes=10)
     to_encode.update({"exp": expire})
     encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
-    return encoded_jwt
+    return encoded_jwt
+
+
+#####################################################
+# 账号密码类使用如下函数
+#####################################################
+
+# 加密密码
+def encrypt_password(password: str) -> str:
+    return pwd_context.hash(password)
+
+# 验证密码
+def verify_password(password: str, hashed: str) -> bool:
+    return pwd_context.verify(password, hashed)

+ 2 - 0
jobs/__init__.py

@@ -13,8 +13,10 @@ from .avcon_job import proc as avcon_proc
 from .duty_job import proc as duty_proc
 from .vehicle_job import proc as vehicle_proc
 from .hkvideo_job import proc as hkvideo_proc
+from common.security import encrypt_password
 
 def register_jobs(scheduler: BaseScheduler):
+    print('encrypt_password:', encrypt_password('666666'))
     # scheduler.add_job(yzy_proc, next_run_time=(datetime.now() + timedelta(seconds=3)))
     # scheduler.add_job(yzy_proc, CronTrigger.from_crontab('0 */5 * * *'))
     # scheduler.add_job(yzy_msg_queue_proc, CronTrigger.from_crontab('* * * * *'))

+ 6 - 4
routers/prod_api/auth.py

@@ -14,7 +14,8 @@ from io import BytesIO
 from utils.StripTagsHTMLParser import *
 from common import security
 from datetime import timedelta
-from common.security import valid_access_token
+from common.security import verify_password
+from utils import ase_utils
 from common.auth_user import *
 from common import YzyApi
 from models import *
@@ -109,9 +110,9 @@ async def login(
             "msg": "登录错误多,请5分钟后再尝试!",
         }
 
-    
+    password = ase_utils.aesDecrypt(uuid_str, password)
+    logger.info('userpass: {}', password)
 
-    # userpass = ase_utils.aesDecrypt(loginkey, userpass)
     row = db.query(SysUser).filter(SysUser.user_name == username).first()
 
     if row is None:
@@ -123,7 +124,8 @@ async def login(
         #     "errmsg": "帐号或者密码错误",
         # }
 
-    if row.password != password:
+    logger.info('row.password: {}', row.password)
+    if verify_password(password, row.password) == False:
         login_error_times = login_error_times + 1
         redis_set_with_time(redis_login_key, str(login_error_times), 300)
 

+ 2 - 2
utils/ase_utils.py

@@ -25,7 +25,7 @@ def aesEncrypt(key, data):
     result = cipher.encrypt(data.encode())
     encodestrs = base64.b64encode(result)
     enctext = encodestrs.decode('utf8')
-    print(enctext)
+    # print(enctext)
     return enctext
 
 def aesDecrypt(key, data):
@@ -42,5 +42,5 @@ def aesDecrypt(key, data):
     # 去补位
     text_decrypted = unpad(cipher.decrypt(data))
     text_decrypted = text_decrypted.decode('utf8')
-    print(text_decrypted)
+    # print(text_decrypted)
     return text_decrypted