flask添加用户登录认证功能

添加用户登录认证功能

相比较django项目中使用了jwt方法认证用户,我在我的flask中的认证方法相对来说比较简陋,我使用后端服务器存储session的办法来认证用户是否登录。当然flask也可以使用jwt来添加用户认证。

创建一个认证装饰器

在utils文件夹下创建一个authentic.py文件,添加内容

import functools
from flask import session,jsonify,g
from cars import constants

def login_required(func):
    @functools.wraps(func)#decorate inner function, avoid current decorator decorate decorated function
    def inner(*args,**kwargs):
        user_id=session.get('user_id')
        if not user_id:
            return jsonify(message_code=constants.RETURN_LOGin,message='user is not login')
        else:
            g.user_id=user_id
            return func(*args,**kwargs)
    return inner

这个装饰器主要是为了获取session中存储的用户数据,如果没有则会报错

在需要认证的视图上添加认证装饰器

在register.py中添加以下方法

from cars.utils.authentication import login_required


@api.route('/index',methods=['get'])
@login_required
添加认证装饰器
def index():

    return 'this is index'

@api.route('/logout',methods=['DELETE'])
@login_required
添加认证装饰器
def logout():
这是一个登出方法,会删除会话的数据
    session.pop('user_id')
    session.pop('user_phone')
    return jsonify(message='logout',message_code=constants.RETURN_OKAY)

现在我们可以进行测试,先删除之前登录存放在session中的数据
flask添加用户登录认证功能_第1张图片
现在我们尝试登录index页面
flask添加用户登录认证功能_第2张图片
这里可以看到我们的认证生效了

你可能感兴趣的:(flask项目学习)