作者:倾城修罗__598 | 来源:互联网 | 2023-10-12 12:02
当用户访问
的时候我会验证用户是否登陆,如果登陆就正常访问,否则就跳转到
,基本的功能已经实现,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 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,那么第一个
判断就是没用的,进入第二个判断,第二个判断用户是不合法的,然后跳转到
页面,但是访问这个页面的时候还是会进行验证。
我现在需要这样这,在第二个判断中,如果在session中获取不到值,那么就要把用户的session删除,然后再跳转到登陆页面,问题就是如何再跳转登陆页面吧这个COOKIE删除掉呢?