官方社群在线客服官方频道防骗查询货币工具

BBS论坛(九)

2025年01月14日 02:16:50
news.like.tgnews.like.tgnews.like.tgnews.like.tg

LIKE.TG 成立于2020年,总部位于马来西亚,是首家汇集全球互联网产品,提供一站式软件产品解决方案的综合性品牌。唯一官方网站:www.like.tg

9.1.权限和角色模型定义

(1)cms/models

代码语言:javascript
复制
class CMSPermission(object): ALL_PERMISSION = 0b11111111 # 1.访问者的权限 VISITOR = 0b00000001 # 2.管理帖子的权限 POSTER = 0b00000010 # 3.管理评论的权限 COMMENTER = 0b00000100 # 4.管理板块的权限 BOARDER = 0b00001000 # 5.管理前台用户的权限 FRONTUSER = 0b00010000 # 6.管理后台用户的权限 CMSUSER = 0b00100000 # 7.管理后台管理员的权限 ADMINER = 0b01000000 cms_role_user = db.Table( 'cms_role_user', db.Column('cms_role_id',db.Integer,db.ForeignKey('cms_role.id'),primary_key=True), db.Column('cms_user_id',db.Integer,db.ForeignKey('cms_user.id'),primary_key=True) ) class CMSRole(db.Model): __tablename__ = 'cms_role' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) desc = db.Column(db.String(200),nullable=True) create_time = db.Column(db.DateTime,default=datetime.now) permissions = db.Column(db.Integer,default=CMSPermission.VISITOR) users = db.relationship('CMSUser',secondary=cms_role_user,backref='roles')

生成到数据库

代码语言:javascript
复制
python manage.py db migrate python manage.py db upgrade

(2)manage.py

代码语言:javascript
复制
CMSRole = cms_models.CMSRole CMSPermission = cms_models.CMSPermission @manager.command def create_role(): # 1.访问者(可以修改个人信息) visitor = CMSRole(name='访问者',desc='只能访问数据,不能修改') visitor.permissions = CMSPermission.VISITOR # 2.运营人员(修改个人信息,管理帖子,管理评论,管理前台用户) operator = CMSRole(name='运营',desc='管理帖子,管理评论,管理前台用户,') operator.permissions = CMSPermission.VISITOR|CMSPermission.POSTER\ |CMSPermission.COMMENTER|CMSPermission.FRONTUSER # 3.管理员(拥有所有权限) admin = CMSRole(name='管理员',desc='拥有本系统所有权限') admin.permissions = CMSPermission.VISITOR|CMSPermission.POSTER|CMSPermission.CMSUSER\ |CMSPermission.COMMENTER|CMSPermission.FRONTUSER|CMSPermission.BOARDER # 4.开发者 developer = CMSRole(name='开发者',desc='开发人员专用角色') developer.permissions = CMSPermission.ALL_PERMISSION db.session.add_all([visitor,operator,admin,developer]) db.session.commit()

创建角色

代码语言:javascript
复制
python manage.py create_role

9.2.封装权限判断功能

(1)cms/models.py

代码语言:javascript
复制
class CMSUser(db.Model): #....... @property def permissions(self): #用户拥有的权限 if not self.roles: return 0 all_permissions = 0 #用户所有的角色 for role in self.roles: #取出用户所有角色的所有权限 permissions = role.permissions #把所有权限通过“|=”整合到all_permissions all_permissions |= permissions return all_permissions def has_permission(self,permission): # 判断用户是否有‘xxx’权限 #通过与操作,判断用户是否有‘permission’;得到的结果相等返回true,不相等返回false return self.permissions&permission == permission @property def is_developer(self): #判断是不是开发者 return self.has_permission(CMSPermission.ALL_PERMISSION)

(2)manage.py

代码语言:javascript
复制
@manager.option('-e','--email',dest='email') #用户邮箱 @manager.option('-n','--name',dest='name') #角色名字 def add_user_to_role(email,name): '''添加用户到某个角色''' user = CMSUser.query.filter_by(email=email).first() if user: role = CMSRole.query.filter_by(name=name).first() if role: #把用户添加到角色里面 role.users.append(user) db.session.commit() print("用户添加到角色成功!") else: print("没有这个角色:%s" %role) else: print("%s邮箱没有这个用户!"%email) @manager.command def test_permission(): '''测试用户是否有xxx权限''' user = CMSUser.query.first() if user.has_permission(CMSPermission.VISITOR): print("这个用户有访问者权限") else: print("这个用户没有访问者权限")

(3)cms终端把用户添加到角色

代码语言:javascript
复制
#添加用户到角色 python manage.py add_user_to_role -e 1184405959@qq.com -n 访问者 #测试 python manage.py test_permission

现在关注【LIKE.TG出海指南频道】【LIKE.TG大客户服务频道】,即可免费领取【WhatsApp、LINE、Telegram、Twitter、ZALO云控】等获客工具试用、【住宅IP、号段筛选】等免费资源,机会难得,快来解锁更多资源,助力您的业务飞速成长!点击【联系客服】

本文由LIKE.TG编辑部转载自互联网并编辑,如有侵权影响,请联系官方客服,将为您妥善处理。

This article is republished from public internet and edited by the LIKE.TG editorial department. If there is any infringement, please contact our official customer service for proper handling.


Server deployment全球论坛人工智能论坛全球峰会发展论坛战略论坛开放论坛程序员论坛互联网峰会科技峰会
加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈
加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈