flask-登录操作

from flask import Flask, session
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

api = Api(app)


app.secret_key = 'fdafsdafsafsafsa'

db = SQLAlchemy(app)



class User(db.Model):
    __tablename__ = 't_user'
    id =db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64))
    mobile = db.Column(db.String(64))

    def to_dict(self):
        return {
            'id':self.id,
            'name':self.name,
            'mobile':self.mobile,
            }

class Login(Resource):

    def post(self):

        parser = RequestParser()
        parser.add_argument('mobile',required=True,location="args")
        parser.add_argument('code', required=True, location="args")

        req = parser.parse_args()

        if req.code !='123456':
            return {'msg':"code_error"}

        user = User.query.filter(User.mobile==req.mobile).first()
        if not user:
            user = User(name=req.mobile,mobile=req.mobile)
            db.session.add(user)
            db.session.commit()
        session['uer_id'] = user.id
        return {'msg': '登录成功'}

class Info(Resource):

    def get(self):

        user_id = session.get('user_id')
        if not user_id:
            return {'message': '请先登录'}, 401

        user = User.query.filter(User.id==user_id).first()
        return user.to_dict()


api.add_resource(Login,'/login')

api.add_resource(Info,'/info')


if __name__ == '__main__':
    app.run(debug=True)

装饰器版

from flask import Flask, session, g
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

api = Api(app)


app.secret_key = 'fdafsdafsafsafsa'

db = SQLAlchemy(app)



class User(db.Model):
    __tablename__ = 't_user'
    id =db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64))
    mobile = db.Column(db.String(64))

    def to_dict(self):
        return {
            'id':self.id,
            'name':self.name,
            'mobile':self.mobile,
            }

class Login(Resource):

    def post(self):

        parser = RequestParser()
        parser.add_argument('mobile',required=True,location="args")
        parser.add_argument('code', required=True, location="args")

        req = parser.parse_args()

        if req.code !='123456':
            return {'msg':"code_error"}

        user = User.query.filter(User.mobile==req.mobile).first()
        if not user:
            user = User(name=req.mobile,mobile=req.mobile)
            db.session.add(user)
            db.session.commit()
        session['user_id'] = user.id
        return {'msg': '登录成功'}


def login_requried(func):
    def wrapper(*args,**kwargs):
        user_id = session.get('user_id')
        if not user_id:
            return {'message': '请先登录'}, 401
        user = User.query.filter(User.id==user_id).first()
        g.user = user

        return func(*args,**kwargs)
    return wrapper



class Info(Resource):

    method_decorators = {'get':[login_requried]}

    def get(self):

        return g.user.to_dict()


api.add_resource(Login,'/login')

api.add_resource(Info,'/info')


if __name__ == '__main__':
    app.run(debug=True)

before_request和装饰器版

from flask import Flask, session, g
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

api = Api(app)


app.secret_key = 'fdafsdafsafsafsa'

db = SQLAlchemy(app)



class User(db.Model):
    __tablename__ = 't_user'
    id =db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64))
    mobile = db.Column(db.String(64))

    def to_dict(self):
        return {
            'id':self.id,
            'name':self.name,
            'mobile':self.mobile,
            }

class Login(Resource):

    def post(self):

        parser = RequestParser()
        parser.add_argument('mobile',required=True,location="args")
        parser.add_argument('code', required=True, location="args")

        req = parser.parse_args()

        if req.code !='123456':
            return {'msg':"code_error"}

        user = User.query.filter(User.mobile==req.mobile).first()
        if not user:
            user = User(name=req.mobile,mobile=req.mobile)
            db.session.add(user)
            db.session.commit()
        session['user_id'] = user.id
        return {'msg': '登录成功'}

@app.before_request
def before_request():
    user_id = session.get('user_id')
    user = User.query.filter(User.id == user_id).first()
    g.user =user




def login_requried(func):
    def wrapper(*args,**kwargs):

        if not g.user:
            return {'message': '请先登录'}, 401

        return func(*args,**kwargs)
    return wrapper



class Info(Resource):

    method_decorators = {'get':[login_requried]}

    def get(self):

        return g.user.to_dict()


api.add_resource(Login,'/login')

api.add_resource(Info,'/info')


if __name__ == '__main__':
    app.run(debug=True)

 

posted @ 2020-06-14 22:08  Tracydzf  阅读(203)  评论(0编辑  收藏  举报