会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132444个问题

微信图片_20220327231352.png

'''
1. 加密的数据   uid
2. 算法     python模块
3. 秘钥     flask_app SECRET_KEY
'''

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from flask import current_app,request
from shop_flask.models import User
from shop_flask.utils.message import to_dict_msg
import functools

def generate_auth_token(uid,expiration):
    # 创建加密对象
    s = Serializer(current_app.config['SECRET_KEY'],expires_in = expiration)
    # 生成token
    return s.dumps({'id':uid}).decode()

def verify_auth_token(token_str):
    # 创建解密对象
    s = Serializer(current_app.config['SECRET_KEY'])
    try:
        data = s.loads(token_str)
    except Exception:
        return None
    usr = User.query.filter_by(id = data['id']).first()
    return usr
    
    
    
    
    
from shop_flask.user import user
from shop_flask import models, db
from flask import request
from shop_flask.user import user_api
from flask_restful import Resource
import re
from shop_flask.utils.message import to_dict_msg
from shop_flask.utils.token import generate_auth_token,login_required

# 蓝图创建路由
@user.route("/")
def index():
    return "User  Hello!!!"


class User(Resource):
    def get(self):
        pass

    def post(self):
        name = request.form.get("name")
        pwd = request.form.get("pwd")
        real_pwd = request.form.get("real_pwd")
        nick_name = request.form.get("nick_name")
        phone = request.form.get("phone")
        email = request.form.get("email")
        if not all([name, pwd, real_pwd]):
            return to_dict_msg(1000)
        if len(name) < 2:
            return to_dict_msg(1002)
        if len(pwd) < 2:
            return to_dict_msg(1003)
        if pwd != real_pwd:
            return to_dict_msg(1004)
        if len(nick_name) < 1:
            return to_dict_msg(1005)
        if not re.match(r"^1[3456789]\d{9}$", phone):
            return to_dict_msg(1006)
        if not re.match(r"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$", email):
            return to_dict_msg(1007)
        try:
            usrr = models.User(name=name, password=pwd, nick_name=nick_name, phone=phone, email=email)
            db.session.add(usrr)
            db.session.commit()
            return to_dict_msg(200)

        except Exception:
            return to_dict_msg(2000)
user_api.add_resource(User, "/user")


# 用户登录操作
@user.route("/login", methods=["POST"])
def login():
    name = request.form.get("name")
    pwd = request.form.get("pwd")
    # 验证用户名或密码是否为空
    if not all([name, pwd]):
        return {"status": 1000, "msg": "数据不完整"}
    # 判断用户名是否大于1个字符,
    if len(name) > 1:
        # 获取用户名
        usr = models.User.query.filter_by(name=name).first()
        # 判断用户名是否为空
        if usr:
            # 判断密码是否为空
            if usr.check_password(pwd):
                token = generate_auth_token(usr.id,1000)
                return to_dict_msg(200,data={"token":token})
    return {"status": 1001, "msg": "用户名或密码错误"}

老师这里按照视频中写的,报错了,但是根据提示报错信息的地方,查看的跟视频里面没有出入啊,

Python 全系列/第十阶段:Flask百战电商后台项目/Flask百战电商后台项目 12092楼
JAVA 全系列/第四阶段:网页编程和设计/HTML5(旧) 12094楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 12095楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 12098楼
Python 全系列/第二十三阶段:人工智能基础_机器学习理论和实战(旧)/无约束最优化问题的求解算法 12099楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 12100楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/Lambda表达式(旧) 12101楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/Lambda表达式(旧) 12102楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 12104楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637