• auth模块(登录验证)


    settings:
    'django.contrib.auth.middleware.AuthenticationMiddleware',

    #这个是认证的中间件,认证成功的话,就可以把这个用户user封装到request里面,下次过来的话就可以直接带着这个cookies过来
    
    
    from  django.contrib.auth import authenticate,login
    from django.contrib import auth

    from  django.contrib.auth.models import  User

    #这个可以拿到这个django自带的User的表,这个是django自己的用户认证的表(创建超级用户和普通用户的表)



    from  django.shortcuts import  render,HttpResponse,redirect
    #加了一个装饰器模块
    
    
    
    def  login(request):
        print('进行认证')
        if  request.method=='POST':
            username = request.POST.get('username')
            passwd = request.POST.get('passwd')
            user = auth.authenticate(username=username, password=passwd)
    #假如这个验证成功的话,这个user就有值,就可以进行登录
            auth.login(request, user)####这个依赖于session,将验证过的用户赋值给request.user属性
    #这个是把这个user封装进这个requets里面,下面既可以直接进行调用了,通过requets.user进行调用,进行登录验证
            '''
            原理讲解:
            这个是将这个user封装进这个request里面,就是将这个user和密码写进这个sessions里面,下次过来的时候就可以直接进行访问了,带着这个cookies进行匹配
            
            '''
            if user:
                return redirect('/index/')
            else:
    
                return   render(request, 'login.html')

    #加了装饰器的话,不知道要跳转到那个页面,所以要先在settings里面加上这个路劲,指定要跳转的页面
    '''
    原理讲解:
    当要到这个index的页面的话,加了装饰器的话,就可以指定跳转到那个页面,在settings里面加了一个login_url的路劲
    这个当访问这个index的url的时候,就会跳转到这个login的页面,然后登陆成功的话,就可以到这个index的页面
    settings里面的配置:

    #配置这个url,如果没有登陆成功的话,就跳转到那个页面
    LOGIN_URL="/login/"
    '''


    @login_required
    def index(request):
    print('进入这个首页的页面')
    ret=request.user.is_authenticated()
        ###这个是判断是否是这个用户已经注册过的
    print(request.user.username)
    #这个是已经封装到requets的模块里面了,所以可以直接进行调用,在这个request里面有这个user,可以直接进行调用里面的user




    def logout(request):
    print('注销')
    auth.logout(request)
    #这个相当于把这个requets里面的user给清除掉,清除掉session_id,注销掉用户

    #request.session.flush()
    #将session的数据都删除,并且cookies也失效

    return redirect('/login/')



    def register(request):
    print('注册')
    user_obj=User.objetcs.create(usernmae='yuxin',password='12')
    ret=user_obj.check_password('23443')
    #这个是验证密码,注册的时候进行的二次的验证
    print(ret)
    #修改密码
    user_obj.set_password('addsds')
    #这个是重新设置这个密码
    user_obj.save()
    #保存这个密码
    return HttpResponse('ok')



    原理讲解:

    这个相当于在session里面记录一个session_id
    request.session['user_id']=user[0].id
    生成特殊的字符串
    特殊字符串生成key的时候,在数据库里面对应一个session_value
    在响应的向这个写了一个cookies,cookies的值就是这个特殊的字符串

     

     

    在这个session里面拿到这个user_id
    user_obj=request.session.get('user_id')
    拿到这个user_id,在已经写进这个session里面的用户拿到这个user_id

     
  • 相关阅读:
    C# 应用程序性能监测器,很不错的工具
    C#接口(interface)与类(class)的实例互相转换深度解析
    异步与线程深度解析
    内存管理:程序是如何被优雅的装载到内存中
    MacBookM1通过DockerDesk安装MySQL8容器
    理解异步编程体系
    asp.net导入excel方法大集合
    无法激活服务,因为它不支持 ASP.NET 兼容性
    Oracle 数据库 在asp.net中 插入时间
    微软发布更新包 修复SilverLight中的6个问题
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/9745514.html
Copyright © 2020-2023  润新知