django基于cookie的登录验证-创新互联

urls.py
url(r'^admin/', admin.site.urls),
url(r'^set_cookie/',views.set_cookie),
url(r'^get_cookie/',views.get_cookie),
url(r'^login/',views.login),
url(r'^order/',views.order),
url(r'^shopping/',views.shopping),
views.py
from django.shortcuts import render, HttpResponse, redirect


# 测试的时候要记得清理缓存哦
# Create your views here.
# 登录认证装饰器
def login_auth(func):
    def inner(request, *args, **kwargs):
        # 拿到之前访问的路径
        url = request.get_full_path()
        is_login = request.COOKIES.get('is_login')
        if is_login:
            res = func(request, *args, **kwargs)
            return res
        else:
            return redirect('/login/?next=%s' %url)
            # return redirect('/login/')

    return inner


# ------------------------
def set_cookie(request):
    obj = HttpResponse('ok')
    obj.set_cookie('name', 's_jun')
    return obj


def get_cookie(request):
    print(type(request.COOKIES))
    print(request.COOKIES)
    name = request.COOKIES.get('name')
    obj = HttpResponse("get_cookie")
    return obj


# -------------------------------------------------------------
# 新的login,拿到之前访问的路径
# 访问/order/ (没有登录,并且删除cookie)页面的时候,会跳到/login/?next=/order/的页面,若是成功登录以后,变会跳到之前访问的路径.(例如:/order/)
def login(request):
    if request.method == "GET":
        return render(request, 'login.html')
    else:
        next = request.GET.get('next')
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        if name == 's_jun' and pwd == '123':
            if next:
                obj=redirect(next)
            else:
                obj=redirect('/shopping/')
            obj.set_cookie('is_login', True)  # 设置cookie
            return obj
        else:
            return HttpResponse('用户名或密码错误')


# 原来的login
# def login(request):
#     if request.method == "GET":
#         return render(request, 'login.html')
#     else:
#         name = request.POST.get('name')
#         pwd = request.POST.get('pwd')
#         if name == 's_jun' and pwd == '123':
#             obj = HttpResponse('登录成功,写入cookie,请刷新页面后查看cookie,返回/order/或者/shopping/,页面查看登录结果')
#             obj.set_cookie('is_login', True)  # 设置cookie
#             return obj
#         else:
#             return HttpResponse('用户名或密码错误')


#  ↑上login 函数与(http://127.0.0.1:8000/order,访问时,若没有登录的情况下,会自动跳转到/login/的页面中,只有登录了才可以看到 http://127.0.0.1:8000/order/的这个页面中(没有跳转到/login/的页面中) )order函数下↓
# 此是为了判断cookie是否存在,存在的话便会看到order的页面中
# 基于cookie 写了登录验证
# def order(request):
#     is_login = request.COOKIES.get('is_login')  # 获取cookie
#     # 判断是否有cookie,获取到的话会看到"我是订单页面,我得登录才能看",获取不到会返回到/login/页面中
#     if is_login:
#         return HttpResponse('我是订单页面,我得登录才能看')
#     else:
#         return redirect('/login/')
#
#
# def shopping(request):
#     is_login = request.COOKIES.get('is_login')  # 获取cookie
#     if is_login:
#         return HttpResponse('我是购物页面,我得登录才能看')
#     else:
#         return redirect('/login/')


# 登录验证语法糖
@login_auth
def order(request):
    return HttpResponse('我是订单页面,我得登录才能看')


@login_auth
def shopping(request):
    return HttpResponse('我是购物页面,我得登录才能看')

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

创新互联公司是一家专注于网站设计、成都网站建设与策划设计,龙游网站建设哪家好?创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:龙游等地区。龙游做网站价格咨询:18982081108
分享文章:django基于cookie的登录验证-创新互联
网站路径:http://pwwzsj.com/article/dhjihh.html