前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >auth模块(登录验证)

auth模块(登录验证)

作者头像
py3study
发布2020-01-19 15:55:05
1.6K0
发布2020-01-19 15:55:05
举报
文章被收录于专栏:python3python3
代码语言:javascript
复制
settings:
'django.contrib.auth.middleware.AuthenticationMiddleware',
#这个是认证的中间件,认证成功的话,就可以把这个用户user封装到request里面,下次过来的话就可以直接带着这个cookies过来

代码语言:javascript
复制
from  django.contrib.auth import authenticate,login
from  django.contrib  import auth
代码语言:javascript
复制
from  django.contrib.auth.models import  User

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

代码语言:javascript
复制
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()
代码语言:javascript
复制
    ###这个是判断是否是这个用户已经注册过的
    print(request.user.username)
#这个是已经封装到requets的模块里面了,所以可以直接进行调用,在这个request里面有这个user,可以直接进行调用里面的user




def logout(request):
    print('注销')
    auth.logout(request)
#这个相当于把这个requets里面的user给清除掉,清除掉session_id,注销掉用户
代码语言:javascript
复制
#request.session.flush()
#将session的数据都删除,并且cookies也失效
代码语言:javascript
复制
    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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档