重新验证/确认用户的凭据

时间:2013-11-19 04:37:31

标签: python django

我理解如何在django中登录/注销用户以及进行身份验证,但有一件事对我的新项目至关重要。

我想让用户登录(我有),然后我想再次询问用户在某些页面上的凭据。

我通过我所做的EmployeeAuthenticatedMixin有一个方法,它检查POST数据的凭据。主要问题是Mixin没有重定向,它只是提供一个页面。因此,用户可以点击刷新按钮并重新提交表单,再次访问它们。

有没有办法要求用户凭据并允许他们访问下一页?也许是内部Django的事情?会议?消息?

2 个答案:

答案 0 :(得分:2)

您可以使用请求(注销)将其注销,强制他们重新登录 伪编码

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

或首先如果用户没有cookie,则使用表单提示用户,您可以使用内置的django方法resp.set_cookie(foo,cookie)检查并设置cookie,但是在对用户进行身份验证之后。

if 'id' in request.COOKIES:
**render page
else:
    authenticate_user(username=foo, password=bar)
    resp.set_cookie(foo, cookie)

答案 1 :(得分: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分钟。