python - DJango跳转页面并删除cookie

查看:446
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆