使用flask-login完成用户权限管理

首先是文档结构在这里插入图片描述

模型中用户类,继承UserMixin

from flask_login import UserMixin

class User(db.Model,UserMixin):
    """用户类"""
    __tablename__='T_U_User'

    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(50),unique=True)
    password=db.Column(db.String(50))

    departmentId=db.Column(db.Integer,db.ForeignKey('T_U_DEPARTMENT.id'))
    department=db.relationship('Department',backref=db.backref('user',lazy='dynamic'))

    operator=db.Column(db.String(50))
    operateTime=db.Column(db.DateTime)

主文件中,声明loginmanager类初始化

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager,login_required

app=Flask(__name__,static_url_path='')
app.debug=True

app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///./db/manager.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True
app.config['SQLALCHEMY_ECHO']=True
app.secret_key='5646465412321swdw'

db=SQLAlchemy(app)

loginmanager=LoginManager()
loginmanager.init_app(app)
loginmanager.session_protection='strong'
loginmanager.login_view='user_manager.login'
loginmanager.login_message='请先登录'
@loginmanager.user_loader
def load_user(user_id):
    from model.model import User
    user=db.session.query(User).get(user_id)
    return user

#导入蓝图
from model.market import market
app.register_blueprint(market)

from model.stock_manager import stock_manager
app.register_blueprint(stock_manager)

from model.user_manager import user_manager
app.register_blueprint(user_manager)

登录视图

class LoginView(MethodView):
    """登录"""
    def get(self):
        return render_template('login.html')

    def post(self):
        username=request.form.get('username','').strip()
        password=request.form.get('pwd','').strip()
        user=db.session.query(User).filter(User.username==username,User.password==password).first()
        if not user:
            flash('用户名或者密码错误')
            return render_template('login.html')
        login_user(user)
        return render_template('index.html')

登出视图,使用@login_requried,必须是已登录的用户才可以访问,否则会跳转至主文件中设定的视图中去

class LogoutView(MethodView):
    """登出"""

    @login_required
    def get(self):
        logout_user()
        return render_template('login.html')
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值