lithon_bcf
Март 21, 2019 08:23:32
Добрый день, сразу скажу, что я абсолютной новичок в данной теме, но мне очень нужна помощь. Нужен пример сайта с простейшей авторизацией через middleware и реализованным в нем словарем сессий. Пользователем вводится логин и пароль, он сравнивается с значениями в словаре. типа {'id сессии':{параметры сессии}} ( которые заранее вбиты, к примеру Админ и юзер), если логин и пароль подходят то просто выдается сообщение об успешной авторизации, иначе выдает сообщение о неправильном вводе.
VadimK
Март 22, 2019 00:09:32
Если пользователь где то вводит логин и пароль - это views ака вьюшки. middleware для этого не предназначены.
FishHook
Март 22, 2019 04:46:22
VadimK
middleware для этого не предназначены
Да ладно! Пользователь же не на каждый реквест вводит логин и пароль. Какой-то код должен вытащить кукисы из запроса, получить сессию, создать пользователя. Именно middleware этим и занимается. А если у вас JWT? А если юзер логинится через LDAP? lithon_bcf вероятно путает авторизацию с аутентификацией, прочем, и то и другое вполне себе реализуется через middleware.
lithon_bcf
Март 22, 2019 14:49:59
FishHookFishHook
Здравствуйте, а можете небольшой пример предоставить, просто я никак не могу понять как это реализовать.
FishHook
Март 22, 2019 15:00:47
lithon_bcf
Вы сейчас просите готовый фреймворк вам дать причем на основе ровно двух строк якобы технического задания? Да это бред. Смотрите в код Django, Flask, Pyramid - там реализовано ровно то, что вы хотите. А набросать для вас веб-сервер с нуля забесплатно, а зачем это кому то надо? Это работа и она требует усилий.
VadimK
Март 26, 2019 02:54:38
FishHook
Да ладно! Пользователь же не на каждый реквест вводит логин и пароль
Вот именно, вводит логин и пароль, а не передает его через GET на произвольную страницу или уже тем более не POST методом на какую либо картинку или файл.
Кстати в той же джанге ничего подобного к примеру я не видел. Ссылочку можно на конкретный кусок документации ? Или как ТСа отбреете “не барское это дело объяснять”
FishHook
Март 26, 2019 04:59:48
VadimK
Кстати в той же джанге ничего подобного к примеру я не видел.
Что вы не видели в джанге? Вы не видели django.contrib.auth.middleware.AuthenticationMiddleware? Или django.contrib.sessions.middleware.SessionMiddleware?
VadimK
Март 26, 2019 11:38:13
Это относится с уже ранее залогиненым юзерам, кому созданна сессия. А для нового юзера сессия из неоткуда не возьмется, кроме как пройти процесс авторизации. Либо через remote_user указать, что это юзер из другой системы. Но и в данном случае, авторизация происходит , но только где то в другом месте. а не на текущем сайте.
В общем авторизация юзера или идентификация - разные вещи. В начальном посте ясно сказано - вводятся логин и пароль.
JOHN_16
Март 26, 2019 11:58:29
можно взять aiohttp - там легко оч легко делается middleware, легче чем в джанге (за фласк не скажу, не делал).
Но в целом я думаю что автор типичный студент, который ничего не знает, а задание делать надо…поэтому его стартовый топик действительно правильно бы переписать не “нужен пример”, а “нужно полностью готовый маленький проект” прям что бы в таком виде передать требуемой стороне. Посему нужны не советы, а взять и сделать. Кто нибудь на это подпишется? Пока что желающих не видно.
FishHook
Март 26, 2019 12:04:56
VadimKДжаляб! Надоело. Ерунду какую-то перетираем.
Во-первых,
VadimK
В общем авторизация юзера или идентификация - разные вещи.
потрясающая мысль!
VadimK
А для нового юзера сессия из неоткуда не возьмется, кроме как пройти процесс авторизации.
То что ты называешь авторизацией, это
аутентификация.
Во-вторых,
VadimK
middleware для этого не предназначены
А для чего же они предназначены? middleware - это промежуточный слой логики, код между двумя крупными частями системы, между клиентом и сервером, между сервером и СУБД, между сервером и кешем, между моделью и контроллером и т.д. Он может делать всё что угодно в твоей архитектуре, вот буквально всё, что ты решишь в этот слой вынести.
VadimK
Или как ТСа отбреете “не барское это дело объяснять”
Э? А что я должен ТСу объяснять? Он не задал ни одного вопроса.