当前位置:网站首页>登录注册(无封装)flask
登录注册(无封装)flask
2022-08-05 22:12:00 【晨馨^@^】
实现登录和注册
1.登录注册思路
1.接收参数
2.校验参数
3.校验验证码
4.逻辑,增删改查
5.返回响应
2.强制登录的思路
1.定义函数login(func)和warpper函数
2.定义钩子函数获取g.uid
3.对数据进行返回
1.1代码实现
# 1.创建视图函数
class LoginView(Resource):
def post(self):
# 接收参数
req=reqparse.RequestParser() # 实例化数据
req.add_argument('phone',required=True)
req.add_argument('code',required=True)
# 校验参数
args=req.parse_args()
# 1.校验验证码
red=redis.Redis(host='1270.0.0.1')
red_byte=red.get('sms_%s'%args['phone'])
if not red_bute:
return jsonify({
'code':400,
'msg':'验证码过期'
})
code_str=red_byte.decode()
if code_str!=args['code']:
return jsonofy({
'code':400,
'msg':'验证码已经过期'
})
# 逻辑增删改查
user=User.query.filter(User.phone==args['phone']).first()
if not user:
u=User(
phone=args['phone']
)
db.session.add(u)
db.session.commit()
user=User.query.filter(User.phone==args['phone']).first()
serect_key=current_app.config.get('加密')
token=jwt.encode({
'uid':user.uid,
'phone':user.phone
},serect_key)
return jsonify({
'code':200,
'msg':'登录成功',
'data':{
'token':token
}
})
对接的前端页面
在获取验证码的地方绑定事件进行验证码校验
在获取登录按钮的时候进行的保存token登录

强制登录代码实现
@定义的db.before_request
def gz():
req=reqparse.RequestParser() # 实例化数据
req.add_argiment('token',default='',localhost='HS256')
arsg=req.parse_args()
jwt_token=args['token']
secret_key=current_app.config.get('SECRET_KEY')
try:
payload=jwt.decode(jwt_token,secret_key,algorithms='HS256')
g.uid=payload['uid']
except Exception as e:
print(e)
g.uid=0
def login(func): # 是一个闭包函数
def warpper(*args,**kwargs):
uid=g.uid
if uid==0:
return jsonify({
'code':400,
'msg':'用户未登录'
})
return func(*args,**kwargs)
return warpper
根据强制登录进行的数据获取
class HomeView(Resource):
def get(self):
uid=g.uid
user_info=User.query.filter(user.uid==uid).first()
return jsonify({
'uid':user_info.uid,
'phone':user_info.phone
})
边栏推荐
猜你喜欢
随机推荐
[Raspberry Pi] Raspberry Pi uses a 0.96-inch OLED display
XSS | 青训营笔记
Selection Sort
使用C语言代码实现学生信息管理系统怎么写
redis宕机导致数据丢失的重大生产事故总结
[Flask] Deploy flask using gevent
2022年官方排名前十的证券公司有哪些?开户安全的吗?
S32K1xx 系列安全手册
设备巡检管理系统的作用
家具行业APS解决方案
MySQL GROUP BY 分组后加条件HAVING使用方法
Centos7 source code compile and install postgresql 11.7
桶排序(Bucket Sort)
为什么互联网大厂一边疯狂裁员,一边不停招聘?
以不得第动心为耻
[OMV]小米摄像头无法获取Debian 11安装的OMV6的网络存储未知
ROS环境搭建过程
js全屏实现代码
聚簇索引之B+Tree是如何长高的
LSN、Checkpoint?MySQL的崩溃恢复是怎么做的?









