使用者操作:
1,獲取重置密碼的頁面
2,傳送要重置密碼的郵箱
3,接受郵件並開啟重置密碼的頁面
4,填寫密碼並提交
應用程式執行過程:
1,返回給使用者重置密碼的表單
2,接受使用者所填郵箱
3,驗證郵箱是否存在
4,生成驗證鏈結(token的值)
5,傳送重置郵件
6,接受使用者get請求並對token的值進行解碼,驗證是否與前面所填郵箱id相同
7,接受使用者post請求,含新密碼,並修改資料庫內容
傳送重置密碼郵件檢視函式**如下:
views.py
@auth.route('/reset',methods=['get','post'])
defpassword_reset_request
():if
not current_user.is_anonymous:
#驗證密碼是否為登入狀態,如果是,則終止重置密碼
return redirect(url_for('main.index'))
form = passwordresetrequestform()
if form.validate_on_submit():
user = user.query.filter_by(email=form.email.data).first()
if user:
#如果使用者存在
token = user.generate_reset_token()
#呼叫user模組中的generate_reset_token函式生成驗證資訊
send_email(user.email,'重置密碼','auth/email/reset_password',
user=user,token=token,next=request.args.get('next'))
#呼叫send_email函式,渲染郵件內容之後傳送重置密碼郵件
flash('重置密碼的郵件已經傳送,請查收!')
return redirect(url_for('auth.login'))
return render_template('auth/reset_password.html',form=form)
提交新密碼檢視函式**如下:
@auth.route('/reset/', methods=['get', 'post'])
defpassword_reset
(token):
ifnot current_user.is_anonymous:
return redirect(url_for('main.index'))
form = passwordresetform()
if form.validate_on_submit():
user = user.query.filter_by(email=form.email.data).first()
if user is
none:
return redirect(url_for('main.index'))
if user.reset_password(token, form.password.data):
flash('your password has been updated.')
return redirect(url_for('auth.login'))
else:
return redirect(url_for('main.index'))
return render_template('auth/reset_password.html', form=form)
注:因為要重置密碼肯定是忘了密碼的人,所以不需要用@login_required將其鎖住
小結:這一步也不難,就是有點繁瑣,將大問題轉化為乙個個小問題逐個解決就好啦~
flask許可權管理功能的實現
許可權管理功能的實現可以分為以下幾個小塊 1,新建資料庫表role,裡面包括id integer,主鍵 name string permission integer default boolean users是指向user模型的對外關係,反向賦給user模型乙個role屬性,這樣就可以同郭user....
實現登入 Flask 實現登入功能
在大多數人學習 web 開發的路線圖中,登入功能往往是我們接觸到的第乙個功能,本文對 flask 實現登入功能做乙個簡單的介紹。需求的分析往往是實現的第一步,在對 flask 的登入功能進行編碼 demo 之前,有必要先介紹一下登入模組的功能列表和基本流程。乙個登入功能主要要實現如下幾個基本的功能點...
記住密碼功能實現
可以用兩種方式實現該功能 1 cookie方式 2 localstorage方式 click me ps 我用cookie時未成功。var user document.getelementbyid user var password document.getelementbyid password ...