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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程为Django第八季课程:用户权限管理     本季课程主要用户登录后权限管理,内容包含:用户权限管理的总体介绍和分析、RBAC的介绍、角色管理用户加入角色、xmselect选择框的使用、菜单管理权限条目的管理权限的树状结构的呈现、为角色分配权限用户登录后构建权限的列表、在中间件中完善权限的验证、用户登录后构建侧边栏菜单的数据、登录后自动生成侧边栏的树状结构、templatetags的使用等等内容    本案例完整的演示了项目实现过程,虽然不复杂,但涉及的内容非常多,特别是前后端交互的时候,有诸多的坑等着你去踩,好在王老师全程代码呈现,带着大家一起填坑,大大提高学习效率的同时,也培养了大家良好的代码习惯,希望大家一起跟着王进老师学习Python开发。  Django第九季课程课程预告:Web项目发布到公有云  课程目标:本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。对于从事一份Python Web开发相关的工作简直轻而易举。 项目展示:  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值