用户登录成功后送上cookies,让用户一段时间内不用再次登录,没有cookies时则自动跳转到登录页面。
登录后台:
class Login(View):
def get(self, req):
return render(req, "login/login.html")
def post(self, req):
username = req.POST.get("username")
password = req.POST.get("password")
is_exist = User.objects.filter(username=username, password=password)
if is_exist:
obj = redirect("/index/")
obj.set_cookie("admin", "admin123")#cookie的key和value
return obj
else:
return redirect("/login/")
看set_cookies源码可以在知道
def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
domain=None, secure=False, httponly=False):
"""
Sets 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 ``max_age`` will be calculated.
max_age为过多少秒cookie失效
path--为cookie在哪个路径下有效
domain--为设置在哪个域名下生效
secure=False--为对HTTPS失效
httponly=True--为只允许在http传递,不能用js获取
在httponly为False时,在浏览器的console中输入document.cookiet通过js获取到cookie
obj.set_signed_cookie("admin", "admin123",salt="danbro")
如果要对cookie加密则可以调用set_signed_cookie函数加密,底层使用base64加密的,base64加密可逆,而md5不可逆。
salt为加密参数,自定义。
解密为get_signed_cookie(“admin”,salt="danbro")函数
一般salt写在配置文件里。