Flask-SQLAlchemy:用户角色模型和关系

     2023-03-16     63

关键词:

【中文标题】Flask-SQLAlchemy:用户角色模型和关系【英文标题】:Flask-SQLAlchemy: User role Models and relationship 【发布时间】:2022-01-12 10:32:18 【问题描述】:

我正在尝试创建 Flask-SqlAlchemy 数据库模型,并且需要将用户链接到单个角色。示例角色:“用户”、“管理员”、“版主”。

当然我可以使用一个简单的关系,它只是向用户添加一个 user_role_id 列,但我也想跟踪最后一次修改。

class User:
    id = db.Column(db.Integer, primary_key=True)

class UserRole:
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)

class UserRoleLink(db.Model):
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"), primary_key=True)
    user_role_id = db.Column(db.Integer, db.ForeignKey("user_role.id"), primary_key=True)
    last_modified = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)

如何使用所需的关系完成此模型?另外我想确保一个用户只能拥有一个角色,但角色可以根据需要经常使用。

提前谢谢你!

【问题讨论】:

【参考方案1】:

我认为它应该适合你:

class User:
    id = db.Column(db.Integer, primary_key=True)

class UserRole:
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False, unique=True)
    role_link = db.relationship('UserRoleLink', cascade='all, delete-orphan', uselist=False)

class UserRoleLink(db.Model):
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"), primary_key=True)
    user_role_id = db.Column(db.Integer, db.ForeignKey("user_role.id"), primary_key=True)
    last_modified = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)

【讨论】:

分配角色未插入到其相应的模型

...del【发布时间】:2019-06-1723:05:08【问题描述】:我正在为用户分配角色。我已经实现了这个使用有很多通过关联。该要求表示特定用户可以有任意数量的角色。已经创建了用户、角色模型并将这两者与用户角色模型相关联。当我... 查看详情

Flask-SQLAlchemy with_for_update() 行锁

】Flask-SQLAlchemywith_for_update()行锁【英文标题】:Flask-SQLAlchemywith_for_update()rowlock【发布时间】:2017-04-0316:13:04【问题描述】:我有一个名为“用户”的模型,而“用户”有“金钱”。存在多个会话可以同时读取模型\'User\'并更新\'m... 查看详情

Laravel - 我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系? [关闭]

】Laravel-我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系?[关闭]【英文标题】:Laravel-IhaveaUsermodelthathasdifferentroles.Howtomakearelationshipbetweenuserswithcertainroles?[closed]【发布时间】:2016-09-1021:47:38【问题描... 查看详情

如何根据用户在 Laravel 5 中的角色选择用户?

】如何根据用户在Laravel5中的角色选择用户?【英文标题】:HowtoselectusersbasedontherolethattheyhaveinLaravel5?【发布时间】:2018-03-2915:00:15【问题描述】:我想从我的控制器中选择所有具有“客户”角色的用户。我有一个用户模型和一... 查看详情

使用关注点扩展具有角色的用户模型

】使用关注点扩展具有角色的用户模型【英文标题】:UsingConcernstoExtendUserModelWithRoles【发布时间】:2016-05-3019:43:13【问题描述】:我正在尝试在Rails中使用Concerns和特定于角色的方法构建基于角色的数据结构。我探索了其他解决... 查看详情

通过表单更改用户角色

】通过表单更改用户角色【英文标题】:Changinguserrolesthroughaform【发布时间】:2010-12-1812:11:07【问题描述】:我正在尝试创建一个Rails表单,允许管理员用户更改分配给其他用户的角色。我创建的表单注册了对用户的更改(例如... 查看详情

产品经理必须掌握的权限模型

...制(Role-BasedAccessControl)。RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离。通过对用户设置角色,对角色设置权限范围从而使得不同用户拥有不同角色对应的权限。这样的... 查看详情

使用 Spring MVC 和 Spring Security 填充基于用户角色的模型

】使用SpringMVC和SpringSecurity填充基于用户角色的模型【英文标题】:PopulatingaModelbasedonUserRolewithSpringMVCandSpringSecurity【发布时间】:2011-08-1103:31:17【问题描述】:根据SpringSecurity管理的用户角色,我在SpringMVC应用程序中填充模型内... 查看详情

设计、角色和简单形式

...序中使用设计、简单的表单和角色模型。我有一个设计与用户模型配合使用的用户模型,并且我有一个单独的配置文件模型,其中包含用户将与之交互的所有可编辑功能。我在我的注册表单中添加了字段,供用户提名他们的角色... 查看详情

设计一个“用户-角色-权限”的模型和功能

例如,一个博客管理后台,可以添加很多用户,分配不同的角色,不同角色具有不同权限-普通用户:查看博客,审核通过博客,下架博客-管理员:修改博客,删除博客+普通用户的权限-超级... 查看详情

权限控制rbac模型

...目的是为了简化授权和鉴权的过程。RBAC模型的核心是在用户和权限之间引入了角色的概念。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限(如下图),从而达到用户和权限... 查看详情

rbac模型的概念及技术实现

...问控制模型能得到如此丰富而广泛的使用,得益于它基于用户与角色关系分配权限进行访问控制的核心理念。1、RBAC模型相关概念一家企业或组织中存在着多个不同的角色,不同的角色做着不同的事情。RBAC模型的核心理念是,为... 查看详情

从 flask-sqlalchemy db 获取所有模型

】从flask-sqlalchemydb获取所有模型【英文标题】:Getallmodelsfromflask-sqlalchemydb【发布时间】:2014-12-1808:06:45【问题描述】:在SQLAlchemy中构建数据库后,我想获取所有模型,即代表它们的类>>>db<SQLAlchemyengine=\'postgresql:///example... 查看详情

如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy)

】如何自动填充SQLAlchemy数据库字段?(Flask-SQLAlchemy)【英文标题】:HowCanIAutomaticallyPopulateSQLAlchemyDatabaseFields?(Flask-SQLAlchemy)【发布时间】:2012-08-2215:47:46【问题描述】:我有一个简单的用户模型,定义如下:#models.pyfromdatetimeimportda... 查看详情

如何使用 Flask-SQLAlchemy 使用 csv 填充具有外键的模型?

】如何使用Flask-SQLAlchemy使用csv填充具有外键的模型?【英文标题】:HowtopopulateamodelhavingforeignkeyusingcsvusingFlask-SQLAlchemy?【发布时间】:2013-05-0418:04:47【问题描述】:我有2个模型类如下:classDomain(db.Model):__tablename__=\'domain\'id=db.Colu... 查看详情

rbac用户角色权限设计方案转载

RBAC(Role-BasedAccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户... 查看详情

基于角色的访问控制

...tmlRBAC(Role-BasedAccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角... 查看详情

rbac

RBAC(Role-BasedAccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色... 查看详情