当前位置: 首页 > news >正文

Django用户认证系统

Django用户认证系统

  • 1.用户身份认证
  • 2.权限管理
  • 3.权限的授予
  • 4.权限校验

1.用户身份认证

Django提供了authenticate方法用于对用户身份进行认证

user = authenticate(username='admin', password='admin')

如果认证成功,将会返回user对象,否则返回None


2.权限管理

Django利用auth_permission表定义权限

Permission表的定义非常简单,只有三个属性:

  • name:权限显示的名称,最多允许255个字符
  • content_type:关联ContentType(记录App与model的信息)
  • codename:权限的名称编码,最多允许100个字符

在这里插入图片描述


3.权限的授予

首先,获取到User对象和Permission对象实例:

dahe = User.objects.get(username='dahe')
add_topic = Permission.objects.get(codename='add_topic')
change_topic = Permission.objects.get(codename='change_topic')

对于User对象实例,可以使用get_all_permissions方法查看当前它所被授予的权限:

dahe_permission = dahe.get_all_permissions()

给dahe用户添加权限:

dahe.user_permissions.add(add_topic, change_topic)
dahe_permission = dahe.get_all_permissions()

在这里插入图片描述

给用户删除权限:

dahe.user_permissions.remove(add_topic)

清空用户权限:

dahe.user_permissions.clear()

给用户组添加、删除权限的过程与User是类似的🎶


4.权限校验

权限应用到业务系统中时,首先是给用户授予权限,之后校验用户是否拥有某项权限而决定是否能够执行某项操作

用户权限校验可以使用User实例的has_permhas_perms方法,前者判断当前用户是否有某一项权限,后者判断用户是否同时拥有多个权限

has = dahe.has_perms(['post.add_topic', 'post.delete_topic'])
# False

相关文章:

  • 论坛介绍 | COSCon'22 开源硬件(H)
  • 【Vulnhub靶场】——HARRYPOTTER第三部: FAWKES
  • [附源码]Java计算机毕业设计SSMjava视频点播系统
  • Day768.大佬推荐的经典的Redis学习资料 -Redis 核心技术与实战
  • fastdfs简介及在springboot中使用
  • OpenCASCADE使用(Stp to Gltf)
  • 进程互斥的硬件实现方式【操作系统学习笔记】
  • JavaScript教程-原生的原型,Object.prototype,其他的内建原型,从原型当中借用,原型方法,_proto_
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • 基于微信小程序的数码商城程序设计与实现(后台PHP+Mysql)
  • FA_06.不用刷机情况下升级或者降级系统中的fridaserver
  • 【笔试题】【day3】
  • 微信小程序|基于小程序实现人脸识别对比
  • [附源码]Java计算机毕业设计SSMJava商场会员管系统
  • 多模态学习、迁移学习、元学习、联邦学习、表示学习、知识图谱、无监督学习、半监督学习、弱监督学习、自监督学习简介
  • ----------
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Apache Pulsar 2.1 重磅发布
  • Fabric架构演变之路
  • Flex布局到底解决了什么问题
  • interface和setter,getter
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Mysql数据库的条件查询语句
  • rc-form之最单纯情况
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 飞驰在Mesos的涡轮引擎上
  • 猴子数据域名防封接口降低小说被封的风险
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​VRRP 虚拟路由冗余协议(华为)
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $jQuery 重写Alert样式方法
  • (2)STM32单片机上位机
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (笔试题)合法字符串
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (五)关系数据库标准语言SQL
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • ***原理与防范
  • .bat批处理出现中文乱码的情况
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(一)
  • .Net core 6.0 升8.0
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net开发引用程序集提示没有强名称的解决办法