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

 

最新文章

  1. C#设置IE代理及遇到问题的解决方案
  2. PHP 水印设置
  3. putty远程连接ubuntu
  4. rabbitMQ第四篇:远程调用
  5. Entity Framework 第三篇 实体特性声明
  6. java实现链表结构
  7. 开发人员应该知道的SEO
  8. android入门——UI(6)——ViewPager+Menu+PopupWindow
  9. 异步设备IO:OVERLAPPED和IOCompletionPort
  10. JavaScript功能规划的基本语法总结
  11. iOS坐标转换失败?UIKit的屠神坑
  12. 高性能队列Disruptor系列2--浅析Disruptor
  13. java笔记----获取项目resource中class下的路径
  14. 真机*Appium
  15. vs中如何统计整个项目的代码行数
  16. Shell记录-Shell命令(find)
  17. 发布订阅者模式之C#委托实现
  18. PHP:第五章——字符串转换与比较
  19. pip下载默认绕过代理
  20. tensorflow c++ API加载.pb模型文件并预测图片

热门文章

  1. C#数据库发布与连接
  2. eventproxy 介绍这款好用的工具,前端事件式编程的思维
  3. linux centos 7 nodejs 的安装
  4. 使用jQuery插件时避免重复引入jquery.js文件
  5. ****** 四十二 ******、软设笔记【网络基础】-IPv6协议、常用的网络协议
  6. Oracle SQL*Plus命令
  7. IDAPython脚本之收集函数的调用信息
  8. mysql 创建存储过程
  9. Restful API学习Day4 - DRF版本控制和认证
  10. 第19月第17天 uitextview 文本垂直居中 uiimage中间不拉伸