python - DJango跳转页面并删除cookie
本文介绍了python - DJango跳转页面并删除cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
当用户访问http://127.0.0.1/
的时候我会验证用户是否登陆,如果登陆就正常访问,否则就跳转到http://127.0.0.1/login
,基本的功能已经实现,代码如下:
class UserAuthMiddleware(MiddlewareMixin):
def process_request(self, request):
# 如果cookie不存在
if 'uc' not in request.COOKIES:
# 如果访问的路径不是/login/就跳转到/login/
if request.path != '/login/':
return redirect('/login')
# 如果存在
else:
# 获取session中用户登陆状态的值 如果为true则登陆 否则跳转登录页面
uc = request.COOKIES['uc']
try:
us = request.session[uc]
# 如果用户登陆的状态为false 跳转登陆页面
if us['is_login'] != 'true':
return redirect('/login')
# 根据cookie取session值出错 跳转登录页面
except Exception as e:
return redirect('/login')
上面的代码是一个中间件,那么现在有这么一个问题就是说,如果有人通过不正当手段去访问必须是登陆之后才能访问的页面,他可能也会伪造一个cookie来进行验证,如果带有cookie,那么第一个if
判断就是没用的,进入第二个判断,第二个判断用户是不合法的,然后跳转到http://127.0.0.1/login/
页面,但是访问这个页面的时候还是会进行验证。
我现在需要这样这,在第二个判断中,如果在session中获取不到值,那么就要把用户的session删除,然后再跳转到登陆页面,问题就是如何再跳转登陆页面吧这个cookie删除掉呢?
解决方案
一言以蔽之,就是不合法直接删了跳登录
response = HttpResponseRedirect('/login/')
response.delete_cookie('uc')
return response
这篇关于python - DJango跳转页面并删除cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文