我有一个使用 django.contrib.auth 但没有使用 Django 内置权限系统的应用程序。相反,视图具有 @login_required 装饰器,然后检查用户属于哪个组,并根据组在视图中遵循不同的代码执行分支。
一个用户只能属于一个组。
每次检查用户组似乎太多了,所以我正在尝试编写一个 Django 中间件,让我知道会话中的用户组。
看看下面的代码,我的中间件会像我想要的那样工作吗?
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'] 。
需要您的建议和意见。如果以这种方式处理,会话是否安全?这会起作用吗?我是 Django、Python 和一般编程的新手。
谢谢。