разница python-social-auth между входом в систему и регистрацией

Я начал использовать python-social-auth в проекте django для аутентификации пользователей из facebook, электронной почты и, возможно, из других источников. Я смог интегрировать его в свой проект и создать новых пользователей как с Facebook, так и с электронной почтой. Я понимаю концепцию конвейера, но что-то мне остается неясным:

Как отличить вход и регистрацию? Мне кажется, что python-social-auth имеет единый конвейер как для входа, так и для регистрации.

Я реализовал шаблон регистрации и входа (с электронной почтой), но на данный момент оба отправляют форму на URL-адрес '/complete/email/'.

Моя форма входа в систему отправляет только электронное письмо и пароль, но это создает нового пользователя, если электронное письмо еще не существует.

Как бы вы различали оба варианта использования? Должен ли я использовать конвейер python-social-auth только для регистрации и реализовать представление входа в систему для моей страницы «Вход с электронной почтой», как если бы я не использовал python-social- авторизация?

Спасибо за любой ответ, опыт того, как вы это сделали, или дополнительные объяснения концепций python-social-auth.


person overlii    schedule 17.03.2014    source источник
comment
В конвейере передается флаг is_new, который будет True/False, чтобы сигнализировать о новом пользователе или о том, который уже существует в вашем приложении. Также вы можете определить SOCIAL_AUTH_NEW_USER_REDIRECT_URL для перенаправления пользователей в это место после регистрации, также SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL делает то же самое для пользователей, связывающих новую социальную учетную запись (но уже являющихся частью вашей системы).   -  person omab    schedule 18.03.2014
comment
Хорошо, если я правильно понимаю, я должен использовать один и тот же конвейер в обоих случаях, отправляя обе формы на URL-адрес «/complete/email» и обрабатывая их по-разному в соответствии с флагом is_new. Спасибо за подсказку, буду копать!   -  person overlii    schedule 18.03.2014
comment
Хорошо, если быть более точным, я отправляю от login form до '/complete/email' с полями email и password и от signupform до '/complete/email' с полями email, password и username, так как мне нужно имя пользователя. Моя проблема в том, что login form создает новых пользователей.   -  person overlii    schedule 18.03.2014
comment
Кажется, мне нужно создать свой собственный бэкэнд для входа по электронной почте, я вернусь, когда у меня будет больше;)   -  person overlii    schedule 18.03.2014


Ответы (1)


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

Если бы вы сделали это с помощью python-social-auth, мне все равно было бы интересно узнать о вашем решении, но сейчас я буду использовать его для других источников аутентификации, где он работает из коробки, как я этого хочу!

person overlii    schedule 18.03.2014