访问配置文件页面时需要Django新鲜登录

访问配置文件页面时需要Django新鲜登录,django,django-authentication,Django,Django Authentication,我是django新手,正在为我的应用程序编写身份验证系统。现在我已经构建了基本的登录/注销功能 我想要的是,无论何时登录的用户想要访问他们的个人资料页面,都应该要求他们确认密码 我在django文档上搜索过这个,但是我没有找到任何关于如何实现的资源。我知道flask有一个fresh\u login\u requireddecorator来做这件事,只是想知道django是否也可以做同样的事情。我认为django中没有任何功能。但是你可以在老师的帮助下自己写作。例如: def verify_fre

我是django新手,正在为我的应用程序编写身份验证系统。现在我已经构建了基本的登录/注销功能

我想要的是,无论何时登录的用户想要访问他们的个人资料页面,都应该要求他们确认密码


我在django文档上搜索过这个,但是我没有找到任何关于如何实现的资源。我知道flask有一个
fresh\u login\u required
decorator来做这件事,只是想知道django是否也可以做同样的事情。

我认为django中没有任何功能。但是你可以在老师的帮助下自己写作。例如:

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
首先,我们需要编写一个装饰程序:

# 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\u password\u view\u url
的视图,您需要在
request.session
中的键
has\u login\u 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