flask重置密碼功能的實現

2021-07-24 09:51:11 字數 1965 閱讀 2812

使用者操作:

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 ...