本篇文章給大家?guī)淼膬热菔顷P于Flask里引用哈希密碼的方法介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
哈希密碼(Password Hash):
對口令進行一次性的加密處理而形成的雜亂字符串。這個加密的過程被認為是不可逆的,也就是說,人們認為從哈希串中是不可能還原出原口令的。(這句話是比較官方的解釋)。
白話點說就是:當我們在注冊賬號密碼的時候,需要用到,Password Hash 會將我們注冊的密碼進行一次加密處理。然后當我們做登錄操作的時候,會進行一次解密處理去和我們輸入的密碼匹配。
在Flask中的使用:
1.導包
# 導包 from werkzeug.security import generate_password_hash,check_password_hash
其中: generate_password_hash 是生成密碼 ; check_password_hash 是密碼驗證
2. 注冊賬號的時候用到 generate_password_hash
@admin_blue.route('add_user') defadd_user():
# Adminuser是數(shù)據(jù)庫中一張表的名字 , user:注冊的賬號 pass_hash: 注冊的密碼,此時注冊的密碼的是 123 add_user=Adminuser(user='admin',pass_hash=generate_password_hash('123')) db.session.add(add_user) return'OK'
此時我們注冊的密碼是“123”,當我們用到 generate_password_hash 將“123”加密的時候,數(shù)據(jù)庫里面就變成:
3. 我們既然已經(jīng)完成了注冊,就輪到登錄,當我們登錄的時候,在輸入密碼的時候,就需要用到 check_password_hash來解密,進而來驗證密碼
# 登錄 @admin_blue.route('/login',methods=['get','post']) def login(): if request.method=='POST': username=request.form.get('username') password=request.form.get('password') if not all([username,password]): flash('請輸入賬號和密碼') else: sqluser=Adminuser.query.filter(Adminuser.user==username).first() if not sqluser: flash('賬號不正確') else: a=check_password_hash(sqluser.pass_hash,password) print(a) if a: session['admin_username']=username return redirect(url_for('admin.index')) else: flash('密碼不正確') return render_template('admin/login.html')
總之重點就在于: generate_password_hash 是生成密碼 ; check_password_hash 是密碼驗證,其他的代碼就是Flask中最簡單的注冊、登錄。
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com