django里原生实现登录 注册 注销

本文详细介绍了如何在Django中实现用户登录、注册与注销功能,包括用户表及子表的设计、图片上传配置、密码加密处理、ticket机制的实现及中间件的使用。

登录 注册 注销在django里得原生实现

准备工作

  1. 创建用户表,创建用户子表,一般用户表包含用户名,密码,Email,头像,和is_delete(用以隐藏信息得),子表包含ticket 和 outtime过期时间,关联到用户表。
  2. 需要一个登录页面,和注册页面

注册

  1. 拿到页面传入得信息,并对密码进行加密操作
    • make_password
  2. 注意,拿图片是通过FILES方法拿到。这里要拿图片,需要做以下设置,
    • models,存放得图片指定地址(upload_to=’icon’)
    • settings,
      MEDIA_URL = ‘/media/’
      MEDIA_ROOT = os.path.join(BASE_DIR, ‘media’)
    • 工程urls,
      urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
    • html,form里,
      enctype=”multipart/form-data”
  3. 做一个判断,判断用户是否存在,判断邮箱是否存在,不存在就创建用户,存储到数据库里,并且返回到登录连接。

登录

  1. 拿到页面得用户,判断数据库里是否存在
  2. 然后拿到密码,判断密码是否相等,注意解密
    • check_password(未加密,加密)
  3. 创建ticket,创建过期时间,保存到数据库和页面之中
  4. 判断数据库里是否有这个用户的信息,如果有就更新ticket和过期时间,没有就新建。
    • out_time = datatime.now() + timedelta(days=1)
    • response = HttpResponseRedirect(‘//’)
    • response.set_cookie(‘ticket’,ticket,expires=out_time)

注销

  1. 删除网页里的ticket
    • response.delete_cookie(‘ticket’)

中间件的判断

  1. 函数方法 def process_request(self,request):
  2. 拿到令牌
  3. 如果存在令牌,说明登录过,那么就判断令牌是否过期
  4. 现在的时间和过期时间比较,需要将现在的时间utc一下,减少8个小时比较。
    • out_time = user.outtime.replace(tzinfo=None)
    • now_time = datetime.utcnow()
  5. 如果失效,那么删除页面里的用户信息,否则允许访问用户信息。

中间件的设置

  1. 创建工程目录同级的utils文件夹,里面新建一个UserAuthMiddleware.py的文件,里面写入需要的全局过滤的方法
  2. 在settings,MIDDLEWARE,添加路径’file.xx.Class’
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值