gpt4 book ai didi

Django 中间件确定 session 中用户的组

转载 作者:行者123 更新时间:2023-12-02 06:53:55 24 4
gpt4 key购买 nike

我有一个使用 django.contrib.auth 但没有使用 Django 内置权限系统的应用程序。相反, View 具有 @login_required 装饰器,然后检查用户属于哪个组,并根据组在 View 内遵循不同的代码执行分支。

一个用户只能属于一个组。

每次都检查用户的组似乎太多了,所以我尝试编写一个 Django 中间件,让我知道 session 中的用户组。

看看下面的代码,我的中间件会像我想要的那样工作吗?

class SetGroupMiddleware(object):
def process_request(self, request):
check_if_already_set = request.session.get('thegroup', 'notset')
if check_if_already_set == 'notset':
if request.user.id: # User is not AnonymousUser
groups = request.user.groups.all()
if groups: # actually this will always be True
request.session['thegroup'] = str(groups[0].name) # flowchart of the app ensures that the logged in user will only have one group, and that the user will always have a group
else:
request.session['thegroup'] = 'nogroup' # for completeness

然后我打算在需要的地方检查 request.session['thegroup']。

需要您的建议和意见。如果这样处理, session 安全吗?这会起作用吗?我对 Django、Python 和一般编程都是新手。

谢谢。

最佳答案

总的来说,看起来不错。不过你可以让它更Pythonic一些:

class SetGroupMiddleware(object):
def process_request(self, request):
if 'thegroup' not in request.session:
if not request.user.is_anonymous():
groups = request.user.groups.all()
if groups:
request.session['thegroup'] = str(groups[0].name)
else:
request.session['thegroup'] = None # for completeness

关于Django 中间件确定 session 中用户的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1889607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com