py21_01:基于cooking实现用户登陆
# pythoncookie  # 作用:登陆页面的控制,类似于密钥对登陆。

from django.shortcuts import render, redirect
user_info = {
    'root1': {'pwd': '123'},
    'root2': {'pwd': '234'}
}


def login(request):
    if request.method == "GET":
        return render(request, 'login.html')
    if request.method == "POST":
        u = request.POST.get('username')
        p = request.POST.get('pwd')
        dic = user_info.get(u)
        if not dic:
            return render(request, 'login.html')
        if dic['pwd'] == p:
            res = redirect('/index.html')
            res.set_cookie('username111', u)
            return res
        else:
            return render(request, 'login.html')
        
        
def index(request):
    v = request.COOKIES.get('username111')
    if not v:
        return redirect('/login/')
    return render(request, 'index.html', {'current_user': v})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="POST" action="/login/">
        <input type="text" placeholder="用户名" name="username">
        <input type="password" placeholder="密码" name="pwd">
        <input type="submit" value="提交">
    </form>
</body>
</html>

pythoncookie # 作用:登陆页面的控制,类似于密钥对登陆。

设置cookie时的参数

 

def cookie(request):
    request.COOKIES
    request.COOKIES['username666']        # 定义一个新的cookie
    v = request.COOKIES.get('username666') # 获取cookie的用户名
    print(v)
    return HttpResponse('ok')

    # 1. 封装某个登陆页面的cookie,首先我们得获原来的页面
    response = render(request, 'index.html')
    response = redirect('/index/')
    # 2. 然后我们知道某个登陆的用户名,进行封装(如,封装root1)
    response.set_cookie('new_users_cookie', root1)

    # 封装cookie的时候还可以加上其他的参数
    response.set_cookie('web1',root2,max_age=10)  # max_age 单位是秒

    response.set_cookie('web2', root2, expires=30) # expires指的是具体时间,默认是天
    import datetime
    current_data = datetime.datetime.utcnow()  # 获取当前时间
    allow_time = current_data + datetime.timedelta(days=+3)           # 当前时间+30天
    response.set_cookie('web3',allow_time)

    下面还有几个简单参数 
    path="/"
    domain=none    # 指定的域名
    secure=false   # https传输
    httponly=false # 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)简单隐藏密码

    response.set_cookie('web2', root2, path='/')
    response.set_cookie('web2', root2, domain='dsfa.xx.com')
    response.set_cookie('web2', root2, httponly=False)
    response.set_cookie('web2', root2, secure=False)

 注意:注销cookie,可以把cookie设置为当前时间

 

jquery-cookie

<!--- 利用jquery的cookie插件,传递数 --->
<script src="jquery-1.12.4.js"></script>
<script src="jquery-cookie_1.12.4.js"></script>
<script>
function changePageSize(ths) {
var v = $(ths).val(); // 获取input标签,输入的值
$.cookie('per_page_count', v); // 定义一个per_page_count,如果后端想获取cookie,通过get方法
}
后端同样的用get方法获取

requery.COOKIE.get( "per_page_count" )

 

对于生成cookie还可以加密文

obj = obj.set_signed_cookie('username', 'root1',salt='加密密码')

获取

request.get_signed_cookie( 'username',salt='加密密码' )

posted on 2020-03-04 20:01  yeyu1314  阅读(270)  评论(0)    收藏  举报