Как обрабатывать аутентификацию в django для нескольких приложений и функциональности
Я знаю, что аутентификация должна быть глобальной. все приложения в проекте django должны служить одной цели, но я нахожусь в ситуации, когда мне нужно ограничить некоторые части приложения для некоторых пользователей.
У меня есть экран, который позволяет получить доступ к различным функциям приложения
.i.e
- личные расходы
- список дел
- планировщик электронной почты/планировщик отчетов
пользователи должны иметь возможность видеть все приложения, нажимать на них, входить в систему и затем получать доступ к различным функциям в зависимости от того, кем они являются.
представления также должны быть разными, когда это администратор или простой пользователь.
как этого можно достичь в django? с помощью групп?
Вы можете использовать различные вещи для достижения этой цели.
Использование декораторов, например, если вы хотите, чтобы любой пользователь мог видеть что-то, но не мог редактировать. Вы можете проверить уровень их прав при рендеринге страницы, так что они либо могут, либо не могут получить к ней доступ. И да, для этого вам нужно определить группы пользователей и установить разрешения. Чтобы увидеть все разрешения, возможные в вашем приложении, вы можете посмотреть таблицу под названием auth_permission в вашей базе данных.
Если вы точно знаете пользователя, которому вы хотите предоставить доступ к определенной части вашего приложения, другим решением может быть что-то вроде :
def username_check(user):
return user.email.startswith('linux')
и используйте его в своем представлении как :
check = username_check(user_)
if check:
# do something or get an object to send to the template
else:
# do something else
и в своем шаблоне вы можете сделать что-то вроде:
{% if objects_that_you_passed_via_context_is_not_none %}
# show the user something
{% else %}
# show something else
{% endif %}