2013-11-19 3 views
1

Я понимаю, как регистрировать пользователя в/из, а также проверять подлинность в django, но это одно из важных моментов для моего нового проекта.Повторная аутентификация/подтверждение учетных данных пользователя

Я бы хотел, чтобы пользователь вошел в систему (что у меня есть), и я хотел бы попросить пользователя снова подтвердить свои учетные данные на определенных страницах.

У меня есть один метод с помощью EmployeeAuthenticatedMixin, который я сделал, который проверяет данные POST для учетных данных. Основная проблема заключается в том, что Mixin не перенаправляет, а просто обслуживает страницу. Таким образом, пользователь может нажать кнопку обновления и повторно отправить форму, предоставив ей доступ снова.

Есть ли способ запросить учетные данные пользователя и разрешить им доступ к следующей странице? Может быть, внутренняя вещь Джанго? Сессии? Сообщения?

+0

Можете ли вы просто спросить их у своего пользователя/пройти в любой форме, требующей этого дополнительного уровня безопасности? Do-able для POSTing, а не GETting, хотя ... –

ответ

1

Я написал сигнал, который будет стрелять после входа в систему:

from django.contrib.auth.signals import user_logged_in 

import datetime 

def reauthentication(sender, user, request, **kwargs): 
    request.session['last_login_time'] = str(datetime.datetime.now()) 
    request.session.save() 

user_logged_in.connect(reauthentication) 

Тогда я написал промежуточное программное обеспечение, чтобы поймать взгляды, которые требуют повторной аутентификации, если сессии last_login_time старше 3-х минут.

2

Вы можете войти их заставляя их снова войти в систему, используя запрос (выход из системы) псевдо-кодированный

def confirm_crednetials(request) 
    logout(request) 
    render 'form' 

или первое приглашение пользователю форму, если они не имеют печенье, вы можете проверьте и установите cookie с помощью этого встроенного метода django resp.set_cookie (foo, cookie), но после аутентификации пользователя.

if 'id' in request.COOKIES: 
**render page 
else: 
    authenticate_user(username=foo, password=bar) 
    resp.set_cookie(foo, cookie) 
Смежные вопросы