十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

    • 前言
      • 准备工作
      • 第一部分:回顾 Django 内置的 `User` 模型
      • 第二部分:设计并创建 `Role` 和 `UserProfile` 模型
      • 第三部分:创建 Serializers
      • 第四部分:创建 ViewSets
      • 第五部分:注册 API 路由
      • 第六部分:后端初步测试
    • 总结

前言

在上一篇《【用户认证】安全第一步:基于 JWT 的前后端分离认证方案》中,我们成功地为测试平台集成了用户注册和登录功能,并通过 JWT 保护了我们的 API,使用户可以安全地访问平台了。但是,一个成熟的系统通常还需要对用户进行管理,并根据用户的不同职责赋予不同的操作权限。

这篇文章,我们将聚焦于后端基础的搭建

  1. 回顾并利用 Django 内置的 User 模型。
  2. 设计并创建一个自定义的 Role (角色) 模型。
  3. 创建 UserProfile 模型,将其与 User 模型一对一关联,并在 UserProfile 上建立与 Role 模型的多对多关联。
  4. 创建相应的 Serializer 和 ViewSet,提供用户列表和角色管理的基础 API。

为什么需要角色 (Role)?

直接给每个用户单独分配权限会非常繁琐且难以维护。通过引入“角色”的概念,我们可以:

  1. 将一系列相关的权限打包成一个角色 (例如,“测试工程师”、“项目经理”、“管理员”)。
  2. 然后将角色分配给用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大话软工笔记—架构的概要设计

架构的概要设计是在需求工程分析成果的基础之上对整个系统进行的顶层规划,重点是确定设计规范(理念、主线等),从大的范围和高度对业务进行规划和设计,架构概要设计的成果“业务架构图”,是后续各阶段设计的…

Flink CDC —部署模式

一、Standalone 模式 独立模式是Flink最简单的部署模式。本简短指南将向您展示如何下载最新稳定版本的Flink,安装和运行它。 您还将运行一个示例Flink CDC作业,并在web UI中查看它。 1、准备 Flink在所有类似UNIX的环境中运行,即Linux、Mac…

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https证书过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…

华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手

华为云FlexusDeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、安装AingDesk应用AingDesk应用介绍下载地址安装AingDesk工具 三、开通DeepSeek-R1-0528商用服务访问…

深度解析Git错误:`fatal: detected dubious ownership in repository` 的根源与解决方案

如果你是在使用自己的移动硬盘(U盘)操作项目时遇到的这个问题直接执行git config --global --add safe.directory X:/path即可,只要你的移动硬盘(U盘)没有病毒就不会有安全问题。 深度解析Git错误:fatal: d…

基于Spring Boot的校园社区平台设计与实现

目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅Thymeleaf模板引擎3. ✅MyBatis Plus框架4. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理1.2 浏览管理员首页1.3 论坛管理1.4 校园咨询管理…

Java 8 Map 新增方法详解

Java 8 Map 新增方法详解 1. getOrDefault 源码: default V getOrDefault(Object key, V defaultValue) {V v;return (((v get(key)) ! null) || containsKey(key))? v: defaultValue;}作用:安全获取值,若key不存在则返回默认值 示例&…

山东大学 2025 web数据管理期末复习总结

SDU-2025年-Web数据管理期末总结 考试题型 填空 :都来自于PPT中名词解释简答题:需要背一些公式。 根据L老师上课提及的重点一共总结了87问题。 文章目录 SDU-2025年-Web数据管理期末总结考试题型第1讲 绪论此章不考 第2讲 网络爬虫技术2.1 爬虫是什么…

Spring框架的设计模式

Spring 框架深度集成了多种经典设计模式,这些模式支撑了其核心功能(如IoC、AOP)的实现,以下是关键模式及其应用场景的梳理: 1、工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式…

git报错fatal: 远端意外挂断了

git报错fatal: 远端意外挂断了 报错详细内容 mr.mbogon tinymce % git add . mr.mbogon tinymce % git commit -m init [master c6cfc2a] init1 file changed, 2 insertions(), 1 deletion(-) mr.mengbogon tinymce % git push 枚举对象中: 241, 完成…

Windows 下安装 NVM

NVM 下载 NVM 在工作中,你可能遇到过某个项目需要高版本的 node 才能运行,而有的项目可能只支持低版本的 node,此时就可以借助于一些 Node 版本管理工具,比如 nvm(Node Version Manager),帮助…

AI知识补全(十七):通用人工智能AGI是什么?

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十六):A2A - 谷歌开源的agent通信协议是什么? 目录 一、什么是AGI?概念解析1. 什么是AGI2. AGI与现有AI的本质区别二 、AGI的核…

Spring Cloud Gateway 介绍

什么是Spring Cloud Gateway? Spring Cloud Gateway 是 Spring Cloud 社区官方推出的一个基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.x 的下一代 API 网关(API Gateway)解决方案。它旨在为微服务架构提供统一、简洁、高效的…

slam--高斯分布

教程 博主解释 高斯分布 高斯分布(Gaussian Distribution),又称正态分布(Normal Distribution),是描述连续型随机变量分布规律的一种概率分布。 (1) 一维高斯分布 μ:均值/数学期望&#xff0…

机器视觉标定讲解

B站 :道传科技上位机 观看教程 一、什么是相机标定 相机标定(Camera Calibration)是指通过实验或算法手段确定相机的内部参数(如焦距、主点坐标、畸变系数)和外部参数(如旋转矩阵、平移向量&#xff0…

文件的秒传、分片上传以及断点续传 || Redis缓存减轻数据库读写压力

实现文件的秒传、分片上传以及断点续传的功能。使用 Redis 缓存上传的文件分片信息减轻数据库读写压力,同时防止有人恶意攻击服务器导致服务器磁盘爆满无法提供服务。 🔍 详解: 1. 实现文件的秒传、分片上传以及断点续传功能 秒传&#xff0…

安全大模型智驱网络和数据安全效能跃迁

从2023年ChatGPT开始,网络安全行业就一直尝试和AI大模型来结合,解决网络安全的痛点,例如告警多,专家少,新的APT攻击层出不穷,已有的基于规则的防护手段失灵,如何使用大模型的泛化能力来提升对未…

Android S - 恢复部分应用安装

使用展锐提供的代码编译出来的固件&#xff0c;不包含DeskClock等应用。 之前也遇到过这个情况&#xff0c;只是时间太久忘记了&#xff0c;在这里再次记录&#xff01; frameworks/native/data/etc/android.app.remove.xml<?xml version"1.0" encoding"ut…

android 之 CALL

一、组件职责与定位 组件所在进程核心职责关键特性CallsManagerTelecom系统进程通话状态机核心&#xff1a;管理所有Call对象的生命周期&#xff08;创建、状态更新、销毁&#xff09;。监听Call状态变化并通知所有观察者&#xff08;如InCallController&#xff09;。通过mLi…

Swift 6 学习笔记(二)The Basics

这篇笔记也是同步 Swift 6 官方教程中的第二篇 《The Basics》&#xff0c;这篇博客中的大部分内容在第一篇中已经涉及&#xff0c;这篇可以被认为是基础类型的的补充篇&#xff0c;多了很多说明信息。 官方教学文档 《The Basics》&#xff1a; Swift 提供了许多基本数据类型…