gpt4 book ai didi

python - 在 Python Flask 中,如何获取当前登录用户的角色名称?

转载 作者:行者123 更新时间:2023-12-05 05:11:49 32 4
gpt4 key购买 nike

我在 Flask 中有 3 个表用于用户角色多对多关系。如何获取当前用户的角色名称?

在我的 models.py 中

class User(db.Model, UserMixin):
__tablename__ = "Users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, server_default='')

# Define the relationship to Role via UserRoles
roles = db.relationship('Role', secondary='UserRoles', backref=db.backref("user", lazy="dynamic"))


# Define the Role data-model
class Role(db.Model):
__tablename__ = 'Roles'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(50), unique=True)
users = db.relationship('User', secondary='UserRoles', backref=db.backref("role", lazy="dynamic"))


# # Define the UserRoles association table
class UserRole(db.Model):
__tablename__ = 'UserRoles'
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), db.ForeignKey('Users.id', ondelete='CASCADE'))
role_id = db.Column(db.Integer(), db.ForeignKey('Roles.id', ondelete='CASCADE'))

在我的 views.py 中:

from flask_user import current_user

@app.route("/TestUserRole")
def user_role():
role = current_user.role
return str(role)

在浏览器上,它显示了返回的结果:

SELECT [Roles].id AS [Roles_id], [Roles].name AS [Roles_name] FROM [Roles], [UserRoles] WHERE [UserRoles].user_id = ? AND [Roles].id = [UserRoles].role_id

是否有可能显示当前用户的角色名称的方法,如下所示(但不是很好的例子,因为它会弹出错误)?

role = current_user.role.name

最佳答案

current_user.has_roles 函数会有所帮助。

很简单:假设您配置了以下角色,例如

角色 1:管理员

角色 2:经理

如果用户没有关联的角色,则 current_user.has_roles() 将为 False。

如果登录用户具有“管理员”角色,则可以使用 current_user.has_roles('Admin') 进行验证。

因此可以通过 has_roles() 访问用户角色。

关于python - 在 Python Flask 中,如何获取当前登录用户的角色名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073739/

32 4 0
文章推荐: javascript - 简单的搜索栏,显示
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com