如何在Flask网络应用中限制字段访问权限

0 投票
1 回答
24 浏览
提问于 2025-04-13 16:57

我正在用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")

撰写回答