Как я могу закрыть весь контент моего сайта для неавторизованных пользователей? Я не понимаю как мне в urls проекта сделать проверку на нужный "чих".
Сам проект: https://github.com/ikapeykin/django-tutorial-project (он только для обучения, это не прод, ничего)
Я смотрю пример: https://github.com/vas3k/vas3k.club
Не понимаю как они это сделали через миддлварес.
Объясните понятным языком, пожалуйста
декоратором на вьхи делал. на все кроме страницы логина
Лень смотреть как "они" сделали, но делается это так Открываешь доки, смотришь как нужно мидлваре готовить (Обычно на этом пункте все проваливаются ... Ведь, "ааааааааа доки😱😱😱") Пишешь мидлваре, который проверяет пользователя и редиректишь если не аутентифицирован Пихаешь его после мидлваре секюрити и сесии Профит
Я нормально написал что не понимаю как это реализовано в репозитории вастрика клуба. Я не хочу на каждый роут вешать login_required, потому интересуюсь как это реализовывается и возможно знающие люди кинут просто ссылку, где описано это
> Не понимаю как они это сделали через миддлварес. ну мидлваря берет токен из куки/хидера валидирует его - если токен инвалидный или его нет - «говорит пока»
Описание как они реализовали свою проверку на аус? Нужно ли тебе настолько кастомизированная проверка, как сделано у них? по моему нет, если ты даже не понял то, что я написал Ответь на вопросы 1. Как создать мидлваре? 2. Как проверить, пользователь аутентификацирован? 3. Как делать редирект? Да тебе даже пункт 2,3 не надо писать, если знаешь про декоратор логинрекваред
Про декоратор я знаю, но я не хочу каждый роут им оборачивать
В мидлваре используй его и всё
А также, что такое мидлваре?
Код, который выполняет обработку запроса перед попаданием в роутинг АКА прослойка Если простыми словами и как я это понимаю
Если оно "вот такая вот прослойка", то нужно ли тебе везде пихать логин рекваред если напишешь в "нем"(мидлваре)?
У меня прописано в миддлварях этот аус реквайред
Ну вот смотри, теперь у тебя оно прописано, оказывается
Да, было по дефолту, я сам не дописывал, но могу что-то не понимать и спрашиваю Прописано это: 'django.contrib.auth.middleware.AuthenticationMiddleware',
Хех, и что оно делает?
Понял, вижу что к этому не относится. На стеках писали что это является той самой «блокировкой контента»
Ты понял, что тебе делать надо?
Если этого оказывается нет
Читать доку и искать этот миддлаварь, либо на все роуты повесить логин реквайред
С первым да, доки это всегда, со вторым нет и с 3им тоже нет
Писать свой?
Да, напиши свой или хотя бы прогугли
Я разобрался со всем, сделал. Теперь у меня если пользователь не авторизован, идет редирект: def me(get_response): def middleware(request): if not request.user.is_authenticated and request.path != '/access_denied/': return redirect('access_denied') response = get_response(request) return response return middleware Соответственно, из-за рекурсивного редиректа появилась другая проблема: 1. Как правильно прописать path-исключения, чтобы, например, по path'ам ['access_denied', 'registration/...'] он не трогал эти запросы и отдавал контент страниц? Все-таки вернуться на декоратор login_required?)))
Хех, написать-то написал, а прогуглил? нет Вбей в гугл django login-required-middleware
Гуглил. Я работаю на 3.1.2, а много ответов под 1.9, например. Там же и советуют декоратор @login_required
https://github.com/CleitonDeLima/django-login-required-middleware/blob/master/login_required/middleware.py
Уже вижу, спасибо))) Честно, этого не было
Обсуждают сегодня