У меня есть приложение, которое использует 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 и программировании в целом.
Спасибо.