在登录时,部门的密钥以分离方式存储,并被重定向到用户所需的部门
<_> in 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进行硬编码,但在调用注销后按下后退按钮后,不会检查部门键并加载部门页面而不是登录页面。解决方案是什么?
答案 0 :(得分:0)
尝试装饰器login_required
在视图功能之前添加此装饰器。
例如,
from django.contrib.auth.decorators import login_required
@login_required(login_url='/login')
def my_view(request):
....
....