我是Django的新手,并为我的应用程序编写身份验证系统。现在,我已经建立了基本的登录/注销功能。
我想要的是,每当登录用户想要访问其个人资料页面时,都应要求他们确认其密码。
我已经在Django文档上搜索了此信息,但是我找不到有关如何实现的资源。我知道烧瓶有一个fresh_login_required
装饰器,它可以做到这一点,只是想知道是否也可以与Django一起做同样的事情。
我认为Django中没有任何功能。但是,您可以在 django session
的帮助下独自编写。例如:
首先,我们需要写一个装饰器:
# decorator
def require_fresh_login(function):
@wraps(function)
def wrap(request, *args, **kwargs):
has_verified_profile = request.session.pop('has_login_verified',None)
if has_verified_profile:
return function(request, *args, **kwargs)
else:
return redirect(reverse('fresh_password_view_url'))
return wrap
然后应该有一个fresh_password_view_url
的视图,其中您需要在request.session
中对密钥has_login_verified
进行值。例如:
def verify_fresh_password(request):
form = SomeForm(request.POST)
if form.is_valid():
password = form.cleaned_data.get('password')
if request.user.check_password(password):
request.session['has_login_verified'] = True
return redirect('profile_view')
# else send error response