最近写CMDB的时候遇到了一个问题,那就是flask的权限问题,目前我了解到的Flask有3种方案进行权限管理的操作,
- Flask狗书中的十六进制的权限值来实现
- Flask-Security
-
先跳过第一种,可能纯属是我技术的原因吧,我觉得有轮子不用反复造的想法,所以就跳过了第一种选择了后面2种框架的,其实Flask也是坑,flask_principal的作者已经不更新了,上次提交代码是5年前。。。。。。。Flask-Security这个也是一个大坑,你的user必须要有email,active 字段,而且你还必须用WTF,局限太大了所以放弃。 如果想要了解这里找到一篇不错的Blog传送门||同上。
我的项目结构树
CMDB/
├─app/
│ ├─auth/
│ ├─main/
│ ├─static/
│ ├─templates/
│ ├─__init__.py
│ ├─config.conf
│ ├─models.py
├─manager.py
models.py,必要的模型关系user和role是多对多
from . import db,login_manager
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash,check_password_hash#转换密码用到的库
from flask_login import UserMixin
#角色<-->用户,关联表
roles_users = db.Table(
'role_user',
db.Column('user_id',db.Integer(),db.ForeignKey('user.id')),
db.Column('role_id',db.Integer(),db.ForeignKey('role.id'))
)
#角色表
class Role(db.Model):
__tablename__ = 'role'
id = db.Column(db.Integer(),primary_key=True)
name = db.Column(db.String(80),unique=True)
description = db.Column(db.String(255))
def __repr__(self):