登录时,部门的密钥存储在分离中,并重定向到用户的所需部门
在login_validation
check = models.user.authenticate(password_entered, username_entered)
if check:
print('valid login')
# check the type of user
request.session['department'] = check['department']
request.session.modified = True
注销时,部门密钥被删除
def logout(request):
if request.session.has_key('department'):
del request.session['department']
request.session.modified = True
return render(request, 'login.html', {'login_form': forms.login_form})
并检查网站中的每个页面是否存在部门密钥,如果不存在,则用户被重定向到登录页面
def parts_home(request):
try:
department= request.session['department']
if department != 'parts':
raise Exception
except:
return HttpResponseRedirect(reverse('main:login_page'))
这在地址栏中对部门的 URL 进行硬编码时工作正常,但在注销后按后退按钮后,不会检查部门密钥,并且加载部门页面而不是登录页面。 解决方案是什么?
尝试装饰器login_required
在视图函数之前添加此装饰器。
例如
from django.contrib.auth.decorators import login_required
@login_required(login_url='/login')
def my_view(request):
....
....
参考:
需要登录的装饰器