django - 在没有 Django 用户的情况下使用 django 权限系统
问题描述
我想构建一个类似于 jitsi 的应用程序。所以人们可以在没有注册或登录的情况下加入房间(django 频道)。虽然这应该是可选的支持。
在一个房间里,我需要“用户”。它们具有名称和权限。例如,第一个加入的人应该在“管理员组”中,并且可以踢其他用户。
所以我的想法是为每个“websocket 连接”创建一个用户并将其与房间相关联。因此,我创建了自己的 Django 用户。
class RoomUser(AbstractBaseUser, PermissionsMixin):
"""
A custom user model for rooms to allow using built in permission handling
"""
channelName = models.CharField(
max_length=255,
help_text="Reply channel for connection that is present"
)
userName = models.CharField(
max_length=255, help_text="Free choosen user name"
)
USERNAME_FIELD = 'channelName'
REQUIRED_FIELDS = ['userName']
objects = RoomUserManager()
def __str__(self):
return self.channelName
问题是我收到这些错误消息auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' 与 reverse accessor for 'UserManage.groups' 冲突。
基本上,这也是文档所说的,我应该设置 AUTH_USER_MODEL,所以它用我的自定义用户替换了 django 用户。
但这不是我想要的。我不想替换默认用户模型(我可能想将真实登录添加到我的网站)。
这里的问题似乎是 django 用户更像是一个帐户,您通常拥有一个而不是多个帐户。
就我而言,这些不是帐户,而是更多的临时用户。所以我不确定 django 用户是否真的可以用于我的用例。
有没有办法只重用权限系统(与组和everyhing)没有“帐户”相关的东西,如登录,授权,应该在不同的地方处理?
谢谢!
解决方案
推荐阅读
- sql - IBM i 系统表中的短表名
- php - 需要重复的复杂的 nexted foreach
- jmeter - badboy软件中记录的.jmx文件在jmeter中不起作用
- git - 如何在不忽略文件夹的情况下将所有文件添加到 gitignore?
- jekyll - 如何测试 Google 自定义搜索的准确性?
- php - Yii2:URL重写后无法在后端和前端显示图像
- microsoft-graph-api - 可以通过 Graph API 删除旧版本的 DriveItems 吗?
- javascript - 如何针对node.js中的每个键验证多值字典中的值?
- python - ModuleNotFoundError:没有名为“ldap”的模块
- symfony - 动态选择类型(select2 + AJAX)