170 похожих чатов

Добрый вечер! Подскажите пожалуйста, я использую авторизацию джанги из коробки.

Как я могу закрыть весь контент моего сайта для неавторизованных пользователей? Я не понимаю как мне в urls проекта сделать проверку на нужный "чих".

Сам проект: https://github.com/ikapeykin/django-tutorial-project (он только для обучения, это не прод, ничего)

Я смотрю пример: https://github.com/vas3k/vas3k.club

Не понимаю как они это сделали через миддлварес.

Объясните понятным языком, пожалуйста

26 ответов

38 просмотров

декоратором на вьхи делал. на все кроме страницы логина

Лень смотреть как "они" сделали, но делается это так Открываешь доки, смотришь как нужно мидлваре готовить (Обычно на этом пункте все проваливаются ... Ведь, "ааааааааа доки😱😱😱") Пишешь мидлваре, который проверяет пользователя и редиректишь если не аутентифицирован Пихаешь его после мидлваре секюрити и сесии Профит

Ivan-K. Автор вопроса

Я нормально написал что не понимаю как это реализовано в репозитории вастрика клуба. Я не хочу на каждый роут вешать login_required, потому интересуюсь как это реализовывается и возможно знающие люди кинут просто ссылку, где описано это

> Не понимаю как они это сделали через миддлварес. ну мидлваря берет токен из куки/хидера валидирует его - если токен инвалидный или его нет - «говорит пока»

Описание как они реализовали свою проверку на аус? Нужно ли тебе настолько кастомизированная проверка, как сделано у них? по моему нет, если ты даже не понял то, что я написал Ответь на вопросы 1. Как создать мидлваре? 2. Как проверить, пользователь аутентификацирован? 3. Как делать редирект? Да тебе даже пункт 2,3 не надо писать, если знаешь про декоратор логинрекваред

Ivan-K. Автор вопроса

Про декоратор я знаю, но я не хочу каждый роут им оборачивать

В мидлваре используй его и всё

А также, что такое мидлваре?

Ivan-K. Автор вопроса

Код, который выполняет обработку запроса перед попаданием в роутинг АКА прослойка Если простыми словами и как я это понимаю

Если оно "вот такая вот прослойка", то нужно ли тебе везде пихать логин рекваред если напишешь в "нем"(мидлваре)?

Ivan-K. Автор вопроса

У меня прописано в миддлварях этот аус реквайред

Ну вот смотри, теперь у тебя оно прописано, оказывается

Ivan-K. Автор вопроса

Да, было по дефолту, я сам не дописывал, но могу что-то не понимать и спрашиваю Прописано это: 'django.contrib.auth.middleware.AuthenticationMiddleware',

Хех, и что оно делает?

Ivan-K. Автор вопроса

Понял, вижу что к этому не относится. На стеках писали что это является той самой «блокировкой контента»

Ты понял, что тебе делать надо?

Если этого оказывается нет

Ivan-K. Автор вопроса

Читать доку и искать этот миддлаварь, либо на все роуты повесить логин реквайред

С первым да, доки это всегда, со вторым нет и с 3им тоже нет

Ivan-K. Автор вопроса

Писать свой?

Да, напиши свой или хотя бы прогугли

Ivan-K. Автор вопроса

Я разобрался со всем, сделал. Теперь у меня если пользователь не авторизован, идет редирект: 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

Ivan-K. Автор вопроса

Гуглил. Я работаю на 3.1.2, а много ответов под 1.9, например. Там же и советуют декоратор @login_required

https://github.com/CleitonDeLima/django-login-required-middleware/blob/master/login_required/middleware.py

Ivan-K. Автор вопроса

Уже вижу, спасибо))) Честно, этого не было

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта