我理解如何在django中登录/注销用户以及进行身份验证,但有一件事对我的新项目至关重要。
我想让用户登录(我有),然后我想再次询问用户在某些页面上的凭据。
我通过我所做的EmployeeAuthenticatedMixin有一个方法,它检查POST数据的凭据。主要问题是Mixin没有重定向,它只是提供一个页面。因此,用户可以点击刷新按钮并重新提交表单,再次访问它们。
有没有办法要求用户凭据并允许他们访问下一页?也许是内部Django的事情?会议?消息?
答案 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分钟。