下面是详细讲解“flask框架实现修改密码和免密登录功能”的完整攻略。
一、修改密码功能
1. 创建修改密码的路由
在 Flask 的路由文件中,我们首先要创建一个修改密码的路由。例如:
from flask import Blueprint
user_bp = Blueprint('user', __name__)
@user_bp.route('/change_password', methods=['POST'])
def change_password():
# 填写代码
pass
2. 编写修改密码函数
在 change_password
函数中,我们需要获取用户输入的旧密码和新密码,并将其进行比对,如果旧密码匹配成功,则修改密码。可以按照以下步骤进行:
(1)获取旧密码和新密码
old_password = request.form.get('old_password')
new_password = request.form.get('new_password')
(2)比对旧密码是否匹配成功
if check_password(old_password):
# 修改密码
pass
else:
return jsonify({'msg': '旧密码不正确'})
其中,check_password
函数是自己编写的,用来比对旧密码是否匹配成功。
(3)修改密码
user.password = generate_password_hash(new_password)
db.session.commit()
其中,generate_password_hash
函数是从 werkzeug.security
模块中导入的,用来生成密码哈希值。
3. 完整代码示例
from flask import Blueprint, jsonify, request
from werkzeug.security import generate_password_hash, check_password_hash
user_bp = Blueprint('user', __name__)
@user_bp.route('/change_password', methods=['POST'])
def change_password():
user_id = request.form.get('user_id')
old_password = request.form.get('old_password')
new_password = request.form.get('new_password')
user = User.query.get(user_id)
if not user:
return jsonify({'msg': '用户不存在'})
if check_password_hash(user.password, old_password):
user.password = generate_password_hash(new_password)
db.session.commit()
return jsonify({'msg': '密码修改成功'})
else:
return jsonify({'msg': '旧密码不正确'})
二、免密登录功能
1. 创建登录和记住我的路由
在 Flask 的路由文件中,我们需要创建登录和记住我功能的路由。例如:
from flask import Blueprint
auth_bp = Blueprint('auth', __name__)
@auth_bp.route('/login', methods=['POST'])
def login():
# 填写代码
pass
@auth_bp.route('/remember_me', methods=['POST'])
def remember_me():
# 填写代码
pass
2. 编写免密登录函数
在 login
函数中,我们需要获取用户输入的账号和密码,并将其验证通过后,使用 Flask-Login 中的 login_user
函数进行登录,并设置记住我的选项。
user = User.query.filter_by(username=username).first()
if user and check_password_hash(user.password, password):
login_user(user, remember=remember_me)
return jsonify({'msg': '登录成功'})
else:
return jsonify({'msg': '账号或密码错误'})
在 remember_me
函数中,我们需要获取用户输入的账号,并使用 Flask-Login 中的 login_user
函数进行登录,并设置记住我的选项。
user = User.query.filter_by(username=username).first()
if user:
login_user(user, remember=True)
return jsonify({'msg': '记住我功能开启成功'})
else:
return jsonify({'msg': '账号不存在'})
3. 完整代码示例
from flask import Blueprint, jsonify, request
from werkzeug.security import check_password_hash
from flask_login import login_user
auth_bp = Blueprint('auth', __name__)
@auth_bp.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
remember_me = request.form.get('remember_me', type=bool)
user = User.query.filter_by(username=username).first()
if user and check_password_hash(user.password, password):
login_user(user, remember=remember_me)
return jsonify({'msg': '登录成功'})
else:
return jsonify({'msg': '账号或密码错误'})
@auth_bp.route('/remember_me', methods=['POST'])
def remember_me():
username = request.form.get('username')
user = User.query.filter_by(username=username).first()
if user:
login_user(user, remember=True)
return jsonify({'msg': '记住我功能开启成功'})
else:
return jsonify({'msg': '账号不存在'})
以上就是实现修改密码和免密登录功能的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask框架实现修改密码和免密登录功能 - Python技术站