Django - один пользователь с несколькими учетными записями сотрудников для каждого организационного потока
Я создаю приложение, в котором пользователь имеет несколько учетных записей сотрудников в каждой организации. Когда я вхожу в систему с учетными данными пользователя, он перенаправляется на страницу выбора организации, а после выбора организации я должен перенаправляться на страницу приборной панели, где должна отображаться вся информация, связанная с организацией. Я сомневаюсь, нужно ли передавать идентификатор организации во всех запросах, когда я делаю несколько вызовов api на странице приборной панели? Например: organization/orgid/team/teamid/members/team-member-id, если так пойдет, то url будет длинным.Пожалуйста, помогите с этим. Заранее спасибо.
Нет, вам, вероятно, не нужны длинные урлы. Во многих случаях вы будете просто ссылаться на объект(ы), который(ые) представление должно отображать или манипулировать им. Прежде чем разрешить пользователю делать это, вы проверяете, есть ли у него разрешение на доступ к ним. Это можно сделать различными способами, но если профиль пользователя имеет организацию, а объект представления также имеет организацию, вы можете определить get_object
для представлений, основанных на классах, примерно так:
def get_object( self, queryset=None):
obj = super().get_object( self, queryset)
if request.user.profile.organisation_id != obj.organisation_id:
raise PermissionDenied('...') # or Http404 "not found"
return obj
Вам необходимо сделать это в любом случае, потому что пользователь может ввести все, что захочет, через строку URL своего браузера, например, чтобы попытаться шпионить за другой организацией, которая, как он знает, пользуется общей системой.
Некоторые также могут захотеть использовать UUID в качестве первичных ключей для чувствительных сущностей, а не последовательно возрастающие целые числа. (Это также делает URL намного длиннее!). Причина в том, что последовательные целые числа можно угадать/взломать, а UUID - нет.