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

 

auth模块(登录验证)的更多相关文章

  1. day76 auth模块 用户验证,

    概要: form组件回顾: (1) 创建form组件对应的类,比如LoginForm (2) views.login: if get请求: form_obj=LoginForm() return re ...

  2. Django Auth模块及User对象方法

    一:Django的用户认证 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1:authenticat ...

  3. Django框架中auth模块的详解

    auth模块 auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等 auth方法 ...

  4. 使用htpasswd及nginx auth模块对指定页面进行登录验证

    某些时候,作为运维挂你人员会部署一些工具用于使用外网对内部服务器进行某些管理,比如phpmyadmin.gateone堡垒机等工具.但是这些软件 一旦部署之后,所有人都可以访问到我们的登录页面似乎并不 ...

  5. Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块

    Auth模板 1. 什么是Auth模块,有什么用? django的auth的模块的使用: auth 是集合注册,登录,注销,session 多个功能集合在一起的模块 2. 使用Auth组件的默认aut ...

  6. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块

    这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...

  7. Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制

    1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...

  8. django的权限认证:登录和退出。auth模块和@login_required装饰器

    在settings.py中配置LOGIN_URL参数: # 用户访问带有(@login_required)标签的页面(view)时,如果没有登录,就会跳转到LOGIN_URL(即登陆url). LOG ...

  9. 使用 python 编写一个授权登录验证的模块

    使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ...

随机推荐

  1. PC机Win10声音问题两例处理办法

    1.PC电脑接HDMI显示器后无声的解决方案点击声音->播放,下面有一个是显示器,一个扬声器,选择扬声器即可.2.低音太重解决办法扬声器属性,增强,禁用所有声音效果.

  2. 新萌渗透测试入门DVWA 教程2:DWVA 的配置和暴力破解靶机

    啊呀,上周忘了更新了.开篇时分,简短的深表歉意. 好了,现在开始配置DWVS. 0x00 配置DWVS 首先输入密码登陆,用户名admin,密码password 进入界面后选择,DVWA Securi ...

  3. 利用PHP连接数据库——实现用户登录注册功能以及管理员对用户注册的审核功能

    1.用户注册页面 页面效果: 代码如下: <!DOCTYPE html><html>    <head>        <meta charset=" ...

  4. select样式设计

    举例: select { color: blue; /*去掉边框*/ border: none; outline: none; /*去掉箭头*/ -webkit-appearance: none; / ...

  5. TensorFlow从入门到理解(四):你的第一个循环神经网络RNN(分类例子)

    运行代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # set rando ...

  6. 3年java工作经验必备技能

    3年工作经验的Java程序员应该具备的技能 一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.反射中,Class.forName和clas ...

  7. linux 统计某目录文件的行数

    通过find 正则搜索文件 find . -regex '.*\.c\|.*\.h' 每个文件的行数 find . -regex '.*\.c\|.*\.h' | xargs wc -l 显示文件的总 ...

  8. async get_event_loop

    以下论述转载自https://segmentfault.com/q/1010000007863971 答主论述清晰,很不错,可参考他的其他答案 首先,event loop 就是一个普通 Python ...

  9. [转] pytorch指定GPU

    查过好几次这个命令,总是忘,转一篇mark一下吧 转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如 ...

  10. 20165325 2017-2018-2 《Java程序设计》 第八周学习总结

    一.教材学习笔记 ch12 1.程序是一段静态的代码,进程是程序的一次动态执行过程 2.线程比进程还小,一个进程的进行期间可以产生多个线程. 3.Java内置对多线程的支持.我们的计算机在任何给定说的 ...