我还没有听说过任何这样的应用程序......但我不认为它会太难构建。
如果我这样做,我会在每个应用程序的入口点进行权限检查。例如:
check_app_permission = lambda request: permissions.check_app_permission("blog", request)
def view_blog(request, …):
check_app_permission(request)
…
(甚至可以做一些魔术并在urls.py
关卡中注入此检查……)
此外,我会创建一个has_app_permission
模板标签:
<div id="sidebar">
{% if has_app_permission "blog" %}
{% include "blog/sidebar_recent_posts.html" %}
{% endif %}
</div>
或类似的。
最后,大约有一百万种方法可以实现权限系统……如果没有更多信息,我将无法发表评论。不过,最简单的应该是这样的:
class App(Model):
name = CharField(…)
class AppPermission(object):
app = ForeignKey(App)
user = ForiegnKey(User)
def user_has_permission(user, app_name):
return AppPermission.objects.filter(app__name=app_name, user=user).exists()
我会避免尝试使用中间件来做到这一点,因为如果我正确理解了这个问题,我希望你会(或者,至少,我希望我会)最终花费大量时间构建一个通用框架,最终,只会进行与上述类似的检查。
这有帮助吗?有什么我可以澄清的吗?