2022/04/16

[Python] 下載最新版本後不能檢查密碼 safe_str_cmp 這個方法被棄用該怎麼辦

 我看好到幾篇教學文章都會用到

from werkzeug.security import safe_str_cmp

用來檢查使用者登入時輸入的密碼是否和db內的密碼解密後一樣?

搜尋一下stackoverflow的結果通常是給你就把werkzeug的版本固定在2.0.0就好了

我在想有沒有這個函式的替代方案

於是找到了這篇

DeprecationWarning: 'safe_str_cmp' is deprecated and will be removed in Werkzeug 2.1. Use 'hmac.compare_digest' instead. return safe_str_cmp(bcrypt.hashpw(password, pw_hash), pw_hash) - githubhot

用hmac的這個來替換就可以了?

hmac --- 基於金鑰雜湊的訊息驗證 — Python 3.10.4 說明文件

hmac.compare_digest(ab)

不過我還沒試過,之後再回來補這部分XD

2022/04/14

[Python] flask restx 如何增加Email欄位驗證

https://flask-restx.readthedocs.io/en/latest/swagger.html#the-api-expect-decorator

 看了這段是這麼寫的


import re
EMAIL_REGEX = re.compile(r'\S+@\S+\.\S+')


user = api.model('User', {
    'id': fields.Integer(readonly=True, description='The user unique identifier'),
    'name': fields.String(required=True, description='The user name'),
    'email': fields.String(required=True, description='The user name', pattern='\S+@\S+.\S+')
})

在你要做這個額外檢查的API加入expect這個裝飾器

@ns_users.expect(user, validate=True)