【发布时间】:2019-08-23 14:27:53
【问题描述】:
这里是一个应用案例,我的描述是简化的。
这里有 3 个网站角色:管理员、版主和访问者
管理员可以控制一切,版主管理网站的某些部分,访问者可以发布线程和阅读线程
用户、角色和权限的关系以 RBAC 样式存储在数据库中
现在管理员想将版主降级为访问者,在数据库中操作很容易。
但如果执行此操作时版主仍然在线,则会出现问题。
admin 和 moderator 有两个不同的 session,为了加快网站速度,一般我们把角色和权限放在 session 中,不会在每次用户发送请求时都查询,所以 admin 的操作不会修改版主的会话。一旦主持人会话未过期,主持人仍然拥有权限。
所以基本要求是如何通过 Web 服务中的另一个会话来操作一个会话。
我的网站是基于 python 的。因为需要RBAC,所以比起django我更喜欢flask
django.auth 模块可以控制每个模型的访问权限,但是我们要控制的是api/url而不是模型。因为 rest_framework.authentication.TokenAuthentication 基于 django.auth,如果我们放弃 django.auth,我们必须开发自己的令牌处理程序来击败 CSRF,但我不想要更多的工作量。
所以我的问题是:如何处理这种情况? web服务中不同会话之间如何通信或操作,尤其是flask或django
如果flask能解决这个问题,我会感觉更好。或者基于django的解决方案也可以。
【问题讨论】: