为了账号安全,请及时绑定邮箱和手机立即绑定

Flask 用户权限确认相关问题

Flask 用户权限确认相关问题

万千封印 2019-02-25 03:49:08
在看Flask-Web开发中,关于9.3章角色验证这里有一个问题:class User(UserMixin,db.Model): __tablename__ = 'users' id = db.Column(db.Integer,primary_key=True) email = db.Column(db.String(64),unique=True,index=True) username=db.Column(db.String(64),unique=True,index=True,) role_id = db.Column(db.Integer,db.ForeignKey('roles.id')) password_hash = db.Column(db.String(128)) confirmed = db.Column(db.Boolean,default=False) def __init__(self,**kwargs): super(User,self).__init__(**kwargs) if self.role is None: if self.email==current_app.config['FLASKY_ADMIN']: self.role=Role.query.filter_by(permissions=0xff).first() if self.role is None: self.role=Role.query.filter_by(default=True).first() def can(self.permissions): return self.role is not None and \ (self.role.permissions & permissions) == permissions 就是这个can函数,为什么这里要用位与运算来验证(self.role.permissions & permissions) == permissions,直接用 self.role.permissions == permissions可以么
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

具体用户的权限是角色权限的一个子集。

查看完整回答
反对 回复 2019-03-04
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

不可以,self.role.permissions 可以是几个不同的 permissions 叠加也就是按位或的结果。

查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 723 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信