码迷,mamicode.com
首页 > 其他好文 > 详细

Django学习小记-cookie

时间:2020-01-08 21:01:35      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:src   als   case   sign   装饰器   result   django   sel   sas   

有没有发现我们即使做了登陆框login界面,但别人还是可以通过知道URL就可以访问站点!

这是因为缺少cookie

技术图片
def set_cookie(self, key, value=‘‘, max_age=None, expires=None, path=/,
                   domain=None, secure=False, httponly=False, samesite=None):
        """
        Set a cookie.

        ``expires`` can be:
        - a string in the correct format,
        - a naive ``datetime.datetime`` object in UTC,
        - an aware ``datetime.datetime`` object in any time zone.
        If it is a ``datetime.datetime`` object then calculate ``max_age``.
        """
#max_age是多少秒后失效
#expire是间隔多久后失效,同max_age;建议用max_age
#path=‘/‘ 默认所有下url共用该cookie ,也可指定只有特定url使用cookie
#domain是一二级域名是否可共用cookie
#secure与https有关,若用https则改值设置为True
#httponly安全相关,只有http来回发请求的时候才能用,通过js代码无法获取到。
View Code

我们修改login和index函数添加cookie验证:

#登陆
def login(request):
     if request.method == "GET":
        return render(request,login.html)
    else:
        #用户POST提交的数据
        user = request.POST.get(user)
        pwd = request.POST.get(pwd)
        if user == admin and pwd ==123:
            obj = redirect(/index/)
            obj.set_cookie(ticket,asasasasasaas,max_age=3600)
       #下面这个就是带签名的cookie
#obj.set_signed_cookie(‘ticket‘,‘asasasasasaas‘,salt=‘shannon‘) return obj else: return render(request,login.html) #主页 def index(request): #去请求的cookie中找凭证;有明文的和带签名的两种方式 tk = request.COOKIES.get(ticket) #tk = request.get_signed_cookie(‘ticket‘,salt=‘shannon‘) if not tk: return redirect(/login/) else: #去数据库获取数据 secfile_list = sqlheper.get_list("select id,CaseName,CaseType,Level,Cause,Result from anfu",[]) return render(request,index.html,{secfile_list:secfile_list})

 

 

-还可以自定义cookie签名

-可用装饰器装饰views中的函数

Django学习小记-cookie

标签:src   als   case   sign   装饰器   result   django   sel   sas   

原文地址:https://www.cnblogs.com/ethtool/p/12167588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!