代码如下:?
from django.shortcuts import render from django.shortcuts import HttpResponse from django.shortcuts import redirect # 校验登录装饰器 def login_check(func): def inner(request, *args, **kwargs): # 得到cookie的登录状态值 ### 普通cookie login_status = request.COOKIES.get('login_status') ### '加盐'之后的cookie default='XX' 设置默认值,如果没有则会抛出异常 login_status = request.get_signed_cookie('login_status',default='', salt='sywdsb') print(login_status) # 判断cookie的登录状态值 if login_status != '1': returl=request.path_info # 获得 路径, 不包ip和端口,还有参数,只获得根目录URL路径 print(returl) # 请求哪一个url , 就登录到那个url对应的页面. return redirect(f'/login/?returl={returl}') ret = func(request, *args, **kwargs) return ret return inner def login(request): error = '' if request.method == 'POST': user = request.POST.get('user') pwd = request.POST.get('pwd') if user == 'syw' and pwd == '213': retUrl=request.GET.get('returl') retUrl= retUrl if retUrl else '/index/' ret = redirect(retUrl) # 通过 HttpResponse对象 设置cookie ### 设置普通的cookie # max_age 超时时间 ,单位为秒, 可做算数运算 # path 哪一个路径下可以访问 # secure 是否进行安全的HTTPS协议发送 # domain 生效的域名. 不写就是全域名生效 # httponly 只能是Http协议传输,不能通过js获取到到cookie,抓包除外. ret.set_cookie('login_status', 1,max_age=5*20 ,path='/',secure=False) ### 设置'加盐'的cookie ret.set_signed_cookie('login_status','1',salt='sywdsb') return ret error = '帐号或密码错误~~' return render(request, 'login.html', {'error': error}) def logout(request): # 打印cookie中的某个键的值 print(request.COOKIES.get('login_status')) # 通过 HttpResponse对象 删除cookie ret = redirect(to='/login/') ret.delete_cookie('login_status') return ret @login_check def index(request): return HttpResponse('欢迎进入index页面') @login_check def home(request): return HttpResponse('欢迎进入home页面') 代码如下:?
from django.shortcuts import render from django.shortcuts import HttpResponse from django.shortcuts import redirect # 校验登录装饰器 def login_check(func): def inner(request, *args, **kwargs): # 得到cookie的登录状态值 ### 普通cookie # login_status = request.COOKIES.get('login_status') ### '加盐'之后的cookie default='XX' 设置默认值,如果没有则会抛出异常 # login_status = request.get_signed_cookie('login_status',default='', salt='sywdsb') ### 获取session from django.conf import global_settings login_status = request.session.get('login') # 获得 session print(request.session.keys()) # 获取session的所有键 print(request.session.values()) # 获取session的所有值 print(request.session.session_key) # 获取存在服务端的sessionkey print(request.session.exists('vzzfcn0tocyna7afw5ydpmsdbk6u4on5')) # 判断某个session的key是否存在 ret= request.session.pop('aaa')# 随机删除一个session print(ret) # 删除 session为键名为'aaa'的并返回删除的值 request.session.clear() # 清除 session失效日期小于当前日期的数据 request.session.delete() # 删除所有的session request.session.flush() # 删除当前会话数据,并删除会话的cookie print(login_status) # 判断cookie的登录状态值 if login_status != '1': returl=request.path_info # 获得 路径, 不包ip和端口,还有参数,只获得根目录URL路径 print(returl) # 请求哪一个url , 就登录到那个url对应的页面. return redirect(f'/login/?returl={returl}') ret = func(request, *args, **kwargs) return ret return inner def login(request): error = '' if request.method == 'POST': user = request.POST.get('user') pwd = request.POST.get('pwd') if user == 'syw' and pwd == '213': retUrl=request.GET.get('returl') retUrl= retUrl if retUrl else '/index/' ret = redirect(retUrl) # 通过 HttpResponse对象 设置cookie ### 设置普通的cookie # max_age 超时时间 ,单位为秒, 可做算数运算 # path 哪一个路径下可以访问 # secure 是否进行安全的HTTPS协议发送 # domain 生效的域名. 不写就是全域名生效 # httponly 只能是Http协议传输,不能通过js获取到到cookie,抓包除外. # ret.set_cookie('login_status', 1,max_age=5*20 ,path='/',secure=False) ### 设置'加盐'的cookie # ret.set_signed_cookie('login_status','1',salt='sywdsb') ### 设置session request.session['login']='1' request.session['aaa']='aaa' return ret error = '帐号或密码错误~~' return render(request, 'login.html', {'error': error}) def logout(request): # 打印cookie中的某个键的值 print(request.COOKIES.get('login_status')) ### 删除 session request.session.delete() # 删除所有的session # 删除不了浏览器的sessionID(删除不了保存在浏览器上的cookie) ,只是删除session表中的session记录 request.session.flush() # 删除 浏览器的sessionID(也就是删除cookie) ,也删除session表中的记录, # 通过 HttpResponse对象 删除cookie ret = redirect(to='/login/') ret.delete_cookie('login_status') return ret @login_check def index(request): return HttpResponse('欢迎进入index页面') @login_check def home(request): return HttpResponse('欢迎进入home页面')https://www.cnblogs.com/maple-shaw/articles/9502602.html
转载于:https://www.cnblogs.com/dengl/p/11470840.html