flask中的用户认证(simple_authenticate)

用户认证中心通过session的设置和获取判断用户是否已经登录.
此处使用的是flask中的before_request的钩子函数进行简化,并增加一个装饰器为每一需要认证的功能模块进行装饰:

导入所有需要的python包

from flask import Flask,g,session,request,make_response

步骤1:创建一个app对象

app = Flask(__name__)

步骤2:设置secret_key

app.secret_key='TjhfhieRdfe134E2srfWE'

步骤3:当访问视图前,调用该功能,获取所有登陆用户的信息,并把数据存在g对象中

@app.before_request
def get_session():
    g.data = {}
    g.data['name'] = session.get('name')
    print(g.data['name'])

步骤4: 定义一个功能函数,用来用户登陆,相当于设置session

@app.route('/login')
def user_login():

    # 获取登陆信息
    user_name = request.args.get('user_name')
    password = request.args.get('password')
    if not all([user_name,password]):
        return '登陆信息不能为空'
    if not (user_name == 'laowang' and password=='123456'):
        return '用户名或密码出错'
    response = make_response('success login')
    session['name'] = user_name
    session['pwd'] = password
    return response

步骤5:定义一个功能函数,用来使用户退出登陆

@app.route('/loginout')
def LoginOut():
    if not session.get('name'):
        return '请先登陆'
    session.clear()
    g.data = None
    return '退出成功'

步骤6: 定义一个装饰器,当某个模块需要进行登陆认证时进行是否登陆判断

def AuthWrapper(func):
    def InnerWrapper(*args,**kwargs):
        if not g.data.get('name'):
            return '请登陆'
        else:
            return func(*args,**kwargs)
    return InnerWrapper

步骤7:定义功能模块,用户获取数据(用户获取数据需要对当前是否登陆进行认证)

@app.route('/user_info')
@AuthWrapper
def get_user_info():
    return session.get('name')

步骤8:启动服务器运行,并设定指定的IP地址和端口号,进入调试模式

if __name__=='__main__':
    app.run(debug=True,host='127.0.0.1',port=5002)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值