如何在Flask网络应用中限制字段访问权限
我正在用Python和Flask开发一个网页应用。
我想限制一些应用字段的访问权限,让只有管理员才能访问这些字段。
我想知道有没有现成的工具可以做到这一点,或者最好的方法是通过数据库中的某个值来进行身份验证,比如每个用户的管理员数据。
当admin等于True时,用户可以访问;当admin等于False时,用户不能访问。
class User(UserMixin, db.Model):
__bind_key__ = 'user_database'
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120))
lastname = db.Column(db.String(120))
email = db.Column(db.String(120), unique=True, index=True)
password_hash = db.Column(db.String(128))
admin = db.Column(db.Boolean())
def is_admin(user_id):
user = User.query.filter_by(id=user_id).first()
if user.admin = True:
print("admin")
else: print("Not Admin")
这样做可以吗?还是说这样不安全?
1 个回答
1
一种方法是你可以这样做:
在你的模型中,你可以添加一个叫做 is_admin 的方法,并把它作为类的一个属性:
class User(UserMixin, db.Model):
# ... same all fields
@property
def is_admin(self):
return self.admin
你可以像下面这样使用这个方法,来检查他是否是管理员:
user = User.query.get(user_id)
if user.is_admin:
# Here you can add your logic if admin
print("Admin")
else:
# Here you can add your logic if not admin
print("Not Admin")