zoukankan      html  css  js  c++  java
  • Django 实现用户认证set_Cookie

    当用户通过认证时,set_Cookie(key, value)

    request.Cookie.get(key) 如果key不为空,就说明验证通过,否者重新跳转回login登录页面

    对于URL

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^tp1/', views.tp1),
        url(r'^user_list', views.user_list),
        url(r'^login', views.login),
        url(r'^Order/', views.Order.as_view()),
        url(r'^index/', views.index)
    ]

    对于views文件

    user = {'name':'dacengzi', 'password':123}
    def login(request):
        if request.method == 'GET':  #如果进来的方式是GET,直接跳转
            return render(request, 'login.html')
        elif request.method == 'POST': #如果是POST,说明用户已经上传
            username = request.POST.get('username')  #获取用户名
            password = int(request.POST.get('password')) #获取密码
            current_time = datetime.datetime.utcnow()  #当前时间
            current_time = current_time + datetime.timedelta(seconds=5)  #当前时间推迟5秒
    
            if username == user['name'] and password == user['password']: #如果用户名和密码匹配
                req = redirect('/index/')
    
                req.set_cookie('correct', username, expires=current_time) #设置Cookie标志位
                return  req
            else:
                return render(request, 'login.html')
    def auth(func):
        def inner(request, *args, **kwargs):
            answer = request.COOKIES.get('correct')  #接收验证所得的标志位
            if not answer:  #如果没有收到重新跳转回登录界面
                return render(request, 'login.html')
            else:  # 如果有就执行Order文件
                return func(request, *args, **kwargs)
        return inner
    from django.utils.decorators import method_decorator
    from django import  views
    @method_decorator(auth, name='dispatch')  #给dispatch加装饰器,程序一进来就进行验证
    class Order(views.View):
        def get(self, request):
            u = request.COOKIES.get('correct') #获取u,进行传递
            return render(request, 'index.html', {'u': u})
    
    def index(request):
        return render(request, 'index.html')

    对于login文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/login/" method="post">
        <input type="text" name="username">
        <input type="text" name="password">
        <input type="submit" value="提交">
        </form>
    </body>
    </html>
  • 相关阅读:
    kuangbin 专题一:G题,POJ3087:Shuffle'm Up
    kuangbin专题一:F题,POJ3126:Prime Path
    /*分治典型应用 快速排序*/
    kuangbin专题一 简单搜索 E,POJ 1426 Find The Multiple
    kuangbin专题一:C题,POJ3278:Catch That Cow
    kuangbin专题一B题:POJ2251:Dungeon Master
    kuangbin专题一A题 :POJ1321 :棋盘问题
    1282: ykc想吃好吃的
    2017年ACM第八届山东省赛I题: Parity check(判断 第n项斐波那契数列奇偶性)
    2017年ACM第八届山东省赛J题:company
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9477716.html
Copyright © 2011-2022 走看看