Auth认证系统

from django.contrib.auth import login, logout, authenticate

from django.contrib.auth.models import User

# 用户登陆

user = authenticate(username, password)

if user:

if user.is_active:

login(request, user)

else:

print('账号密码错误')

else:

print("登陆失败")

# 注销

logout(request)

# 创建用户

user = User.objects.create_user(username, password)

user.savae()

# 修改密码

user = authenticate(username, password)

user.set_password(new_password)

user.save()

# 对密码加密和检查加密前的密码和加密后的密码是否相等

from django.contrib.auth.hashers import make_password, check_password

password = "123456"

code_password = make_password(password, None, "pbkdf2_sha256")

check_password(password, code_password)

扩展User模型

方式

描述

代理模型

在数据库中无需创建新数据表。一般用于改变现有模型的行为方式,如增加新方法函数,并不影响现有数据库结构。当不需要在数据库中存储额外信息,但需要增加操作方法或更改模型查询方式时使用

Profile扩展模型User

存储的信息与模型User相关,但是并不影响User原有的认证方法。定义信的模型MyUser,设置某个字段与OneToOneField与User进行一对一关联。

AbstractBaseUser

当User内置的方法不能满足开发需求时,使用该方法对User重新设计。对User和数据库架构影响很大。

AbstractUser

内置的User满足开发需求,在不需要改变函数方法的情况下,增加User额外字段,通过AbstractUser实现。

from django.contrib.auth.models import AbstractUser

from django.db import models

class MyUser(AbstractUser):

tel = models.CharField('手机号', max_length=11)

修改settings.py文件

AUTH_USER_MODEL = 'user.MyUser'

在admin.py文件中添加数据对象

from django.contrib import admin

from user.models import MyUser

from djangp.contrib.auth.admin import UserAdmin

from django.utils.translation import gettext_lazy as _

@admin.register(MyUser)

class MyUserAdmin(UserAdmin):

# 重写UserAdmin的fieldsets,添加其他属性的录入

fieldsets[1] = (_('Personal info'), {'fields': ('first_name', 'last_name', 'tel')})

设置用户权限

# 检查是否拥有权限

user.has_perm('index.add_product')

# 查看全部权限

user.user_permissions.values()

# 添加权限

permission = Permission.objects.get(codename="add_product")

user.user_permissions.add(permission)

# 删除权限

user.user_permissions.remover(permission)

# 自定义Model的权限

class Product(models.Model):

id = models.AutoField('序号', primary_key=True)

# 检查用户权限

from django.shortcuts import render

from django.contrib.auth.decorators import login_required, permission_required

@login_required(login_url="/user/login.html")

@permission_required(perm='index.visit', login_url="/user/login.html")

def index(request):

return render(request, "index.html")

设置用户组

from django.contrib.auth.models import Group

python开发信息系统权限设置_python Django 用户管理和权限认证相关推荐

  1. MySQL(管理)01 -- 用户User和权限Privileges<B.用户管理权限设置>

    2.用户管理和权限设置 用户管理分为几个方面,查看用户.创建用户.对用户授权.修改和删除用户.设置与更改用户密码.撤销用户权限等. 2.1.查看用户 查看用户并没有直接的SQL语句,而是进入 mysq ...

  2. linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

  3. python守护进程进程池_Python—守护进程管理工具(Supervisor)

    一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...

  4. Linux之用户管理、权限管理、程序安装卸载

    一. 用户管理 1. 查看账户 (1). 查看当前账号:whoami ​(2). 查看系统当前登录的账号:who ​补充常用选项: ​(3). 查看系统所有的账号: cat /etc/passwd ​ ...

  5. MySQL学习笔记07【事务、用户管理和权限管理】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  6. linux100day(day7)--用户管理和权限管理简单介绍

    系统基础 计算机的三大部件 CPU 内存 IO 总线 一般使用system call和api来调用硬件 一些基础命令, pwd 查看当前路径cal 计算器clock 时钟hwclock 显示与设置硬件 ...

  7. django 用户管理相关的表

    Django 用户管理相关的表: create table django_content_type (/*内容类型表*/id int(11) not null auto_increment,app_l ...

  8. MySQL用户管理和权限管理

    MySQL用户管理和权限管理 在项目中,一个数据库有很多人需要使用,不能所有的人都使用相同的权限,如果人比较多,一人一个用户也很难管理.一般来说,会分超级管理员权限,管理员权限,读写权限,只读权限等, ...

  9. ubuntu用户管理与权限操作实例

    ubuntu用户管理与权限操作实例 昨天在转载此文时提到都要把文件及目录权限的操作也会独立成文来给大家介绍,今天特地学习了用户管理和权限操作的例程,现总结如下.这些命令基本都是我在自己电脑上运行过后能 ...

最新文章

  1. 排序算法时间复杂度分析
  2. Application runtime path /opt/lampp/htdocs/yii/test/protected/runtime is not valid. 错误
  3. 通过.obj生成2d图像_自动生成 凹凸法线灯贴图 插件
  4. 关卡设计快速入门_5. 编辑已放置的Actor
  5. 云炬随笔20180421
  6. Nearest Opposite Parity(反向建边+spfa)
  7. python_程序格式_缩进_行注释_段注释---python工作笔记012
  8. 对于 Shift-JIS 编码的理解 (win10中 查看 Shift-JIS 编码 コード)
  9. 生成0到9之间的随机整数
  10. Git教程_1 简介
  11. 除了巨沃、富勒WMS,还有什么更好用的仓库管理系统?
  12. Win7开发的VC2012程序在XP上无法运行
  13. kafka安装和相关命令操作——修改中
  14. zabbix三种常用报警方式:邮件、微信和短信报警
  15. 【python10个小实验】1. 画一个简单的三角形
  16. 2021.06.08|提取、比较各样品vcf文件中snp突变频率
  17. Gherkin语法详解之Transforming Data Tables(六)
  18. 别坐在金矿上捡垃圾:给管理者的10条建议
  19. [Matlab仿真模型】短时电力负荷预测模型
  20. centos6.5升级ntp版本至ntp-4.2.6版本以上

热门文章

  1. 基于redis实现分布式锁思考
  2. php 路由实现_PHP操作路由器实现方法示例
  3. iOS高德地图SDK定位和搜索附近信息的具体使用
  4. ARM Linux 3.x的设备树
  5. python--------进程与线程
  6. Oracle 查看表空间大小及其扩展
  7. jquery源码解析:proxy,access,swap,isArraylike详解
  8. 初步学习pg_control文件之六
  9. 锁屏面试题百日百刷-CSS篇(一)
  10. 阿里 深度学习推理框架_如何通过Knative无服务器框架构建深度学习推理