本篇文章给大家谈谈Oracle用户权限Grant,以及oracle用户权限的知识点,同时本文还将给你拓展3--Jenkins详解、用户权限、构建maven、参数化构建、8个方法管理GitHub用户权限
本篇文章给大家谈谈Oracle 用户权限 Grant,以及oracle 用户权限的知识点,同时本文还将给你拓展3--Jenkins详解 、用户权限、构建maven、参数化构建、8个方法管理 GitHub 用户权限、devops===》Jenkins忘记密码、用户权限、部署远程仓库代码到服务器上、Django-用户权限,用户角色使用指南(转载)等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Oracle 用户权限 Grant(oracle 用户权限)
- 3--Jenkins详解 、用户权限、构建maven、参数化构建
- 8个方法管理 GitHub 用户权限
- devops===》Jenkins忘记密码、用户权限、部署远程仓库代码到服务器上
- Django-用户权限,用户角色使用指南(转载)
Oracle 用户权限 Grant(oracle 用户权限)
用户的权限来自系统权限和对象权限
一、系统权限
3个索引权限
Grant CREATE ANY INDEX to User_Name;//创建索引
Grant ALTER ANY INDEX to User_Name;//更改索引
Grant DROP ANY INDEX to User_Name;//删除索引
5个存储过程权限,
4个角色权限
5个序列权限
登录数据库权限
表空间权限
类型权限
视图权限
表权限
触发器
备份数据库
二、对象权限
具体表的操作权限:
grant select,delete,insert,update on user1.t_hr to user2;
grant all on user1.t_hr to user2;
具体存储过程执行权限
grant execute on procedure1 to user1
表空间
alter user user1 default tablespace app;
限制修改的列
grant update(wage,bonus) on teachers to user1
收回权限
revoke insert on departments from user1
三、其它方面
角色有哪些权限
select * from role_sys_privs where role=''xujin'';
用户有哪些权限
select * from dba_role_privs where grantee=upper(''用户名'')
With admin option 用户sh拥有角色dw_manager的权限;可对角色分配用户;可删除角色
GRANT dw_manager
TO sh
WITH ADMIN OPTION;
With Grant option;指定WITH GRANT OPTION以允许被授予者将对象特权授予其他用户和角色。
GRANT READ ON DIRECTORY bfile_dir TO hr
WITH GRANT OPTION;
系统角色的权限
select * from dba_sys_privs where grantee=''角色名称''
3--Jenkins详解 、用户权限、构建maven、参数化构建
目录- 一、Jenkins
- 1.安装Jenkins@H_301_6@
- 2.登录@H_301_6@
- 3.安装插件@H_301_6@
- 4.Jenkins中的凭证和远程连接机器@H_301_6@
- 5.项目所存在的目录@H_301_6@
- 6.优化@H_301_6@
- 二、解决jenkins忘记用户密码问题@H_301_6@
- 三、用户权限 (RBAC权限)
- 1.授权策略@H_301_6@
- 2.创建用户和修改密码@H_301_6@
- 3.创建及管理权限组@H_301_6@
- 4.分配角色组权限@H_301_6@
- 5.使用通配符分配权限@H_301_6@
- 四、Jenkins构建maven
- 1.配置maven环境@H_301_6@
- 2.配置maven@H_301_6@
- 3.安装maven插件@H_301_6@
- 3. 创建maven仓库@H_301_6@
- 五、参数化构建@H_301_6@
一、Jenkins
https://pkg.jenkins.io/redhat-stable/
Jenkins是一个自动化部署的工具。依赖于Java开发的,由各种组件组成的一个自动化部署工具
1.安装Jenkins
#1.安装Java
[root@jenkins jenkins]# yum install java-1.8.0-openjdk* -y
#2.安装Jenkins
方式一
# 安装Jenkins(推荐,因为yum默认为新版本,不建议安装太新的版本)
[root@jenkins jenkins]]# mkdir packages && cd packages
[root@jenkins jenkins]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.1-1.1.noarch.rpm
[root@jenkins jenkins]# yum localinstall -y jenkins-2.249.1-1.1.noarch.rpm
[root@jenkins jenkins]# systemctl restart jenkins
方式二
# yum方式安装需要安装认证 Key
[root@jenkins jenkins]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装Jenkins
[root@jenkins jenkins]# yum install jenkins
[root@jenkins jenkins]# systemctl restart jenkins
2.登录
[root@jenkins jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
e59b14429016454f8ec2e5e7a34f6449
3.安装插件
#1.安装插件
#添加插件
[root@gitlab jenkins]# tar -xf /opt/plugins.tar.gz -C /var/lib/jenkins
# 授权jenkins用户
[root@gitlab ~]# chown -R jenkins.jenkins /var/lib/jenkins/
#重启
[root@gitlab jenkins]# systemctl restart jenkins.service
4.Jenkins中的凭证和远程连接机器
# 系统管理 -> Manage Credentials -> 全局 -> 添加凭据
# Jenkins通过SSH下载代码
1、将Jenkins服务器中的公钥放到GitLab上SSH秘钥
#测试。可以下载
[root@k8s-m-03 ~]# git clone git@192.168.15.14:root/xiangmu1.git
2、将Jenkins服务器私钥放到Jenkins凭证(Manage Credentials)之中
# Jenkins连接远程机器
1、系统管理 -> 系统配置 -> SSH remote hosts
或者
2、系统管理 -> 系统配置 -> Publish over SSH
[root@jenkins ~]# cat /root/.ssh/id_rsa 私钥
配置凭证
配置凭证
Jenkins连接远程机器
5.项目所存在的目录
[root@jenkins ~]# cd /var/lib/jenkins/jobs/ #项目目录
[root@jenkins jobs]# ll
total 0
drwxr-xr-x 3 jenkins jenkins 61 Aug 16 15:35 test-dep-01
drwxr-xr-x 3 jenkins jenkins 61 Aug 16 15:13 test-dep-1
[root@jenkins workspace]# pwd
/var/lib/jenkins/workspace #工程目录,下载代码的目录
6.优化
[root@gitlab updates]# cd /var/lib/jenkins/updates/
[root@gitlab updates]# sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
[root@gitlab updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
#最后,系统管理 --> 插件管理 --> 高级,把站点升级改为国内插件下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
二、解决jenkins忘记用户密码问题
#1.找到存密码的文件
[root@jenkins ~]# cd /var/lib/jenkins/users/
[root@jenkins /var/lib/jenkins/users]# ll
total 4
drwx------ 2 jenkins jenkins 24 Aug 13 11:56 mm_7745824900363635554
-rw-r--r-- 1 jenkins jenkins 294 Aug 13 11:55 users.xml
[root@jenkins elainafang_4555949760451263805]# vim mm_7745824900363635554/config.xml
#2.将密码内容替换成123456的密码内容 #在网上查看jenkins密码
<passwordHash>#jbcrypt:$2a$10$2LvNPMgFiYAyT/CeE5FwnOUkQz4SbTd9Myq/pWf5qAQtz0MWe6K86</passwordHash>
替换成 <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash>
#3.重新加载内面用123456密码登录后在修改密码
三、用户权限 (RBAC权限)
1.授权策略
2.创建用户和修改密码
3.创建及管理权限组
系统管理 —> Manage and Assign Roles —> Manage Roles —> 各个角色(权限组)
Global roles(全局角色): # 管理员等高级用户可以创建基于全局的角色
Item roles(项目角色): # 针对某个或者某些项目的角色 ,添加成组
Node roles(节点角色): # 节点相关的权限
Base: # 设置成所有的用户都有查看的权限
Alvin: # 设置以alvin开头的项目有超管权限
Oldboy: # 设置以oldboy开头的项目有超管权限
4.分配角色组权限
系统管理 —> Manage and Assign Roles —> Assign Roles
5.使用通配符分配权限
.* : 匹配以什么开头的项目
四、Jenkins构建maven
1.配置maven环境
# 下载
[root@jenkins ~]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
#2.解压
[root@jenkins ~]# tar xf apache-maven-3.6.3-bin.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# ll
total 0
drwxr-xr-x 6 root root 99 Aug 17 06:43 apache-maven-3.6.3
#3.添加环境变量
[root@jenkins local]# ln -s /usr/local/apache-maven-3.6.3 /usr/local/maven #建软连接
[root@jenkins maven]# vim /etc/profile #添加环境变量
... ...
xport MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
[root@jenkins maven]# source /etc/profile #重载环境变量
[root@jenkins ~]# mvn --version #测试
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_302, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.138-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"
2.配置maven
#配置JDK
[root@jenkins java-1.8.0-openjdk]# pwd #jdk目录的位置
/usr/lib/jvm/java-1.8.0-openjdk
[root@jenkins ~]# cd /usr/local/maven/ #maven路径
[root@jenkins maven]# pwd
/usr/local/maven
3.安装maven插件
3. 创建maven仓库
使用jenkins用户在/data/software目录下新建一个repository文件夹,用来作为maven的仓库
[root@jenkins ~]# mkdir -pv /data/software/repository
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/software’
mkdir: created directory ‘/data/software/repository’
[root@jenkins ~]# chown jenkins.jenkins /data/software/repository/
使用root账户修改Maven的settings.xml文件(指定仓库目录和阿里云镜像)
[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml
添加
<!--本地仓库-->
<localRepository>/data/software/repository</localRepository>
<mirrors> #里面有这一行,不必再写
<!--阿里云镜像-->
<mirror>
<id>aliyun-maven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven mirror</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
五、参数化构建
https://blog.csdn.net/mm970919/article/details/119711839
8个方法管理 GitHub 用户权限
如同世界正在经历的疫情,由于网络攻击的大幅增加,许多公司也遭受着“网络疫情”,保障代码安全迫在眉睫。在之前的文章中我们了解了安全使用 GitHub 的21条最佳实践。阅读本文,将带您了解在代码发布到 GitHub 之前如何管理用户权限。
1. 了解您的 GitHub 账户类型
GitHub 有三个帐户类型,其访问控制量不等。
-
个人帐户:此帐户仅允许一个所有者添加项目协作者。
-
组织帐户:此帐户类型根据团队结构控制访问权限。它允许跨多个团队成员进行更详细的访问。
-
企业帐户:此帐户类型包括可跨多个组织的强大访问控制。为了提高安全性,它提供了一个本地托管选项。此选项可确保 GitHub 存储库在没有安全的企业网络虚拟专用网络访问下无法在互联网上进行访问。
了解您的开发团队拥有哪种类型的帐户,以便您可以充分利用所有可用的访问权限。
2. 集中访问管理
将访问权限和权限集中给管理员可以简化外部协作者的管理,还可以降低 GitHub 访问成本。
GitHub 服务器访问
GitHub 为开发提供以下类型的访问权限。根据开发人员角色设置访问级别。
-
阅读:使开发人员可以查看和 Clone 代码库,同时不能对代码进行更改。
-
分类:使开发人员能够在没有写入访问权限的情况下管理拉取请求。
-
写入:使开发人员能够同时将新代码提交到存储库。
-
维护:无需授予访问敏感操作权限,使项目经理能够监督代码库。
-
管理:使开发人员能够完全控制代码库,包括保障安全性和删除代码库。
避免根据需求设置访问权限。虽然在短期内很方便,但随着项目的发展和时间的推移,项目中的角色和职位可能会发生变化。为了最大化访问安全,请指定一个人来专门处理和授予项目所需的最低权限。
组织管理访问
如果您拥有组织所有者帐户,则可以将新用户添加到存储库并控制其访问级别。您需要确定组织的基本权限配置文件。当您将新成员添加到 GitHub 存储库时,将自动应用基本权限。默认情况下,为了获得最大的安全性,请确保基本权限仅有读取访问权限。仅在需要时授予更广泛的访问权限。
3. 保护您的代码库
根据2019年发布的一项研究,对公共 GitHub 代码库的全面扫描发现该平台上共有超过57万个敏感数据实例。这些实例包括 API 密钥、私有密钥、OAuth ID、AWS 访问密钥 ID 和各种访问 token。这些类型暴露的主要风险包括经济损失、隐私泄露、数据完整性受损以及信息滥用。尝试执行以下做法来保护您的代码库。
限制代码库可见性
配置不当的服务器或访问权限配置不当的开发人员可能会不小心更改代码库的可见性。要避免这种情况并确保最大安全性,请将代码库可见性更改限制为组织的所有者帐户或项目的管理员级别。
实施单点登录
具有 GitHub Enterprise 的组织可以使用单节点登录(Single Sign-On, SSO)。借助 SSO,组织可以使用自己的帐户和访问权限规则,而无需开发人员使用 GitHub 帐户。SSO 可限制潜在的人为错误和密码重用问题。
禁用分叉(fork)
通过有限的只读访问权限,开发人员可以使用 fork 轻松复制整个代码库。代码仓库最初可能是私有的,但 fork 可以快速将所有内容暴露到公共空间中。风险随着每次 Fork 的发生呈指数级增加,通过暴露的敏感数据创建树状的安全漏洞链。为避免这些情况,请禁用 Fork 以获得最大的安全性。
4. 验证访问权限
若要确保 GitHub 帐户和数据的安全,请要求和管理身份验证访问。
双重身份验证
双重身份验证(2FA)通过在对登录进行身份验证时需要多个凭据来保障安全。为了获得最大的安全性,GitHub 建议使用带有使用时间限制的一次性密码(TOTP)服务,例如 LastPass 身份验证器或 Microsoft 身份验证器。
SSH 身份验证
用户设置安全系数较低的密码或在多个服务之间共享密码,从而产生安全风险。为避免此类风险,请使用 SSH 私有密钥/公有密钥对服务器上的操作进行身份验证。为了提高安全性,GitHub 支持自动 SSH 密钥过期和轮换,即使 SSH 密钥泄露,访问窗口也会受到限制。
个人访问令牌
对于较小的项目,请使用个人访问令牌。个人访问令牌的运作原理类似于 SSH 密钥,但不提供自动轮换,GitHub 帐户所有者需要手动设置。
5. 将访问限制在预批准 IP 地址列表
将 GitHub 服务器的访问锁定在预先批准的静态 IP 地址列表中,这种方法是最简单、最直接的安全访问方式之一。有了IP限制,黑客在试图访问你的 GitHub 代码仓库之前,必须识别并渗透到预先批准的名单上的计算机。即使你的登录凭证被泄露,这对他们来说也是一个重大障碍。
6. 及时撤销权限
为了保持最高的安全标准,需要细化管理访问权限,并在项目开发期间定期对其进行评估。当员工离开项目或企业时,请及时修改或撤销其访问权限。此方法遵循最小特权原则,即授予执行特定任务所需的权限。这样做将确保每个有权访问代码的人都只在其权限范围内工作。
7. 密钥管理解决方案
GitHub 代码库面临的最大安全风险之一是开发人员的粗心大意,而不是恶意组织入侵基础架构。为最大化代码库的安全性,可以考虑密钥管理解决方案。这些解决方案会自动阻止敏感信息到达 GitHub 代码库,并在敏感数据已泄露的情况下清理代码库。 多个 GitHub 工具可处理不同的安全模式,例如:
-
git rebase,用于删除意外提交到代码中的已知敏感信息的命令行工具。
-
truffleHog,是一款功能强大的数据挖掘工具,该工具可以帮助广大研究人员轻松从目标 Git 库中搜索出搜索高熵字符串和敏感数据(如 API 密钥,令牌和访问凭据),可以根据这些信息来提升自己代码库的安全性。
-
Git-Secret,用来加密 git 项目中的文件,防止 git 项目传到网上出现泄密的情况。
密钥管理解决方案需要直接集成到 CI/CD 流水线中,还必须使用 AI 和机器学习算法来进行自动识别和阻止,然后再将其推送到 GitHub 存储库。
若要防止机密首先暴露(即便是意外泄露),请实施 “Secret Vault 机密保险库” 安全策略。Secret Vault 是一个独立的系统,用于存储敏感信息。而 Vault 是一种用于保护高度敏感数据的工具,同时提供统一的访问接口。有了 Secret Vault,可以执行更严格的访问控制和审核跟踪,并能够轻松检测漏洞和违规行为。
8. 制定安全计划保护您的代码
在制定安全计划时,请注意以下几点:
-
在组织内强制实施安全标准,并将所有敏感信息存储在 Secret Vault 或安全密钥存储中。
-
对组织中使用的敏感信息进行分类。了解组织可能出现漏洞的地方,无论是数据库密码、API 密钥、token 还是管理面板的 URL。
-
最重要的是,要意识到人为错误通常是安全漏洞的根源。处理安全漏洞的成本之高可能给企业或组织带来“灭顶之灾”。
企业可以尝试使用这些扫描工具,并将此工具集成到 CI/CD 流水线中,来有效阻止敏感信息提交到 GitHub 代码库。
devops===》Jenkins忘记密码、用户权限、部署远程仓库代码到服务器上
一、解决jenkins忘记用户密码问题
#1.找到存密码的文件
[root@jenkins ~]# cd /var/lib/jenkins/users/elainafang_4555949760451263805/
[root@jenkins elainafang_4555949760451263805]# ll
总用量 4
-rw-r--r-- 1 jenkins jenkins 2846 4月 15 07:43 config.xml
[root@jenkins elainafang_4555949760451263805]# vim config.xml
#2.将密码内容替换成123456的密码内容
<passwordHash>#jbcrypt:$2a$10$2LvNPMgFiYAyT/CeE5FwnOUkQz4SbTd9Myq/pWf5qAQtz0MWe6K86</passwordHash>
替换成 <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash>
#3.重新加载内面用123456密码登录后在修改密码
二、用户权限
1.创建用户
2.创建权限组
使用权限组,需要安装Role-Based Strategy权限插件
1)启用Role-Based Strategy权限插件
2)创建及管理权限组
3)分配角色组权限
4)使用通配符分配权限
.* : 匹配以什么开头的项目
- 测试:先创建角色一夜暴富001分配所有以shang开头的项目(shang.*)
创建test1项目做为参考
3.凭证管理
1)添加SSH凭证
#1.生成密钥对
[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ''/root/.ssh''.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wWPiKZ++fxoqfnhxZkld85G2juHp93VTI95a4odCN3A root@jenkins
The key''s randomart image is:
+---[RSA 2048]----+
| . |
| . o + |
| . =. . + o |
| . +.o...Eo |
| . o.S. .o* ..|
| o..= .=o+ o|
| .o=. ...oo+o|
| o.o. ...o.=.+|
| ..++ooo .+...|
+----[SHA256]-----+
#2.将私钥添加jenkins(不能有空格)
[root@jenkins ~]# cat /root/.ssh/id_rsa
见下图
#3.将公钥添加gitlab
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
见下下图
*******重点注意:前提需要安装git工具***************
yum install git -y
2)通过SSH连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)
- 先到gitlab上复制项目源代码的仓库ssh链接地址
- 打开Jenkins选择要部署的项目
#可在服务器上查看代码文件
[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins workspace]# ll
总用量 0
drwxr-xr-x 3 jenkins jenkins 35 4月 15 16:36 test1
drwxr-xr-x 2 jenkins jenkins 6 4月 15 16:37 test1@tmp
[root@jenkins workspace]# cd test1
[root@jenkins test1]# ll
总用量 4
-rw-r--r-- 1 jenkins jenkins 45 4月 15 16:36 README.md
3)添加HTTP凭证
4)通过HTTP连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)
5)登录服务器SSH(从另一台服务器上拉取源代码)
此处以JenkinsSSH连接gitlab为例
#1.先在服务器上做免密登录
在Jenkins服务器上生成密钥对,将公钥推送到gitlab服务器
[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.12.40
6)将从gitlab远程仓库拉取好源代码的项目部署到其他的服务器上(gitlab)
Django-用户权限,用户角色使用指南(转载)
day08-Django-用户权限,用户角色使用指南

前言(借鉴老师笔记)
RBAC(Role-Based Access Control,基于角色的访问控制)就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。
简单的权限:如下就是一个简单的权限设计模式,其中包含了用户表,角色表,权限表。
稍微复杂一点的权限,可能设计到用户表、权限表、角色表、用户组表、额外的权限表,在django中提供了这一些列的权限相关模型,关于权限设计中表的关联关系如下:
)
1. Django的权限项
Django用permission对象存储权限项,每个model默认都有三个permission,即add model, change model和delete model。例如,定义一个名为学生Student模型,当迁移表后,会在auth_permission中自动创建相应的三个permission:add_student, change_student和delete_student。Django还允许自定义permission。
2. 创建权限
1) 自定义权限
在自定义模型的Meta元中添加permissions参数,自定义权限的名称(‘codename’,‘name’)即codename为权限名,name为权限的描述。在数据库的auth_permission表中还有一个content_type字段,其表示prmission属于哪个model
from django.db import models
class Users(AbstractUser): """ 管理员---拓展User表 """ class Meta: permissions = ( (''add_user_per'', ''添加用户权限''), (''del_user_per'', ''删除用户权限''), (''change_user_per'', ''修改用户权限''), (''sel_user_per'', ''查询用户权限'') )
并在settings.py文件中添加如下设置:
AUTH_USER_MODEL = ''users.Users''
注意:在数据库的auth_permission表中,会新增权限,包括自带的对Users管理的权限,和自定义的四个权限。
如下所示:
[图片上传失败...(image-ee6095-1537444192584)]
2)创建权限
上面的方法是在定义模型的时候自定义权限,也可理解为创建系统的内置权限,如果涉及到在业务逻辑中创建权限,则可以通过Permission模型来创建权限
url(r''^add_user_permission/'', views.add_user_permission,name=''add_user_permission''),
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType from django.http import HttpResponse from users.models import Users def add_user_permission(request): if request.method == ''GET'': # 获取当前Users模型的id值 content_type = ContentType.objects.get_for_model(Users) # codename为权限名,name为描述,content_type为当前权限属于哪一个模型的ID Permission.objects.create(codename=''add_other_user_permission'', name=''添加其他用户权限'', content_type=content_type) return HttpResponse(''创建权限成功'')
3.分配权限
1)给用户直接添加某种权限
采用直接分配权限的方法,给用户添加额外的权限既用户表Users和权限Permission模型以及中间表user_permission之间的关联关系。用户Users模型和权限Permission之间是ManyToManyField()多对多关联关系,关联字段为user_permission。
语法:
添加权限:user对象.user_permission.add(permission对象1, permission对象2)
删除权限:user对象.user_permission.remove(permission对象1, permission对象2)
清空权限:user对象.user_permission.clear()
url(r''^add_permission/'', views.add_permission, name=''add_permission''),
from django.contrib.auth.models import Permission, User
def add_permission(request): if request.method == ''GET'': # 获取id=1d的用户对象 user = Users.objects.get(id=1) # 给该用户添加权限 pers = Permission.objects.filter(codename__in=[''add_user_per'', ''del_user_per'']) for per in pers: # 添加用户权限 user.user_permissions.add(per) #删除权限 # user.user_permissions.remove(per) # 清空权限 user.user_permissions.clear() return HttpResponse(''创建权限成功'')
2)创建组并分配对应组的权限
给组添加权限,涉及到组group表和permission权限表,以及中间关联表。其为ManyToManyFiled()关联关系,关联字段为permissions 语法:
添加权限:group对象.permissions.add(permission对象1, permission对象2)
删除权限:group对象.permissions.remove(permission对象1, permission对象2)
清空权限:group对象.permissions.clear()
url(r''^group_permission/'', views.group_permission, name=''group_permission''),
def group_permission(request): if request.method == ''GET'': # 创建超级管理用户组并给用户组增加对用户进行CRUD的权限 super_group = Group.objects.create(name=''超级管理员'') pers = Permission.objects.filter(codename__in=[''add_user_per'', ''del_user_per'', ''change_user_per'', ''sel_user_per'']) for per in pers: # 添加超级用户组的权限 super_group.permissions.add(per) # 删除超级组的权限 super_group.permissions.remove(per) # 清空组的权限 super_group.permissions.clear() return HttpResponse(''创建组权限'')
3)分配用户和权限组
给用户添加组权限,涉及到组group表和user用户表,以及中间关联表。其为ManyToManyFiled()关联关系,关联字段为groups 语法:
添加权限:user对象.groups.add(groups对象1, groups对象2)
删除权限:user对象.groups.remove(groups对象1, groups对象2)
清空权限:user对象.groups.clear()
url(r''^user_group/'', views.user_group, name=''user_group''),
def user_group(request): if request.method == ''GET'': # 给id为1的用户分配超级管理员组的权限 # 获取超级管理员组group对象 super_group = Group.objects.get(name=''超级管理员'') # 获取id=1d的用户对象 user = Users.objects.get(id=1) # 添加超级用户组的权限 user.groups.add(super_group) # 删除超级组的权限 # user.groups.remove(super_group) # 清空组的权限 # user.groups.clear() return HttpResponse(''创建用户组权限'')
4. 检测用户是否有某权限,和所有权限,组权限
语法:用户对象.has_perm(''模型名.权限codename'')
查询用户所有的权限:user.get_all_permissions()方法列出用户的所有权限,返回值是permission name
查询用户的组权限:user.get_group_permissions()方法列出用户所属group的权限,返回值是permission name
def user_permission(request):
if request.method == ''GET'': # 获取id=1d的用户对象 user = Users.objects.get(id=1) # 查看用户的所有权限 all_perm = user.get_all_permissions() # 查看用户的组权限 group_perm = user.get_group_permissions() # 查询用户是否有add_user_per权限 if user.has_perm(''users.add_user_per''): return HttpResponse(''用户有add_user_per权限'') else: return HttpResponse(''用户没有add_user_per权限'')
5. 权限校验,使用permission_required装饰器
使用permission_required对权限进行校验,如果没有当前登录系统的用户没有该权限则跳转到登录页面,如果当前用户有该权限,则进行访问对应的视图函数。
语法:@permission_required(''应用app名.权限名codename'')
url(r''^add_user_html/'', views.add_user_html, name=''add_user_html''),
from django.contrib.auth.decorators import permission_required
@permission_required(''users.add_users'') def add_user_html(request): if request.method == ''GET'': return HttpResponse(''该方法需要添加用户权限才可访问'')
6. 测试
定义登录的路由,并实现登录操作,当用户登录后,再次访问add_user_html路由地址,则可以访问到对应的视图函数,如果用户没有登录则因为权限问题访问不了add_user_html路由对应的视图函数。
7. 首页index.html中通过权限控制按钮
在模版中使用:模版中使用全局变量perms存储当前用户的所有权限。通过{{ perms.应用名 }}可打印出所有的权限。
在模板中也可以直接通过{{ user }}获取当前登录系统的用户信息。
使用语法格式:
{% if perms.应用名.权限标识 %}
<!-- 这里是有权限才显示的内容 -->
{% endif %}
首页index.html中如下控制按钮的权限:
{% extends ''base.html'' %}
{% block title %}
首页
{% endblock %}
{% block content %}
<!--模版中使用全局变量perms存储当前用户的所有权限-->
{{ perms.users }}
<!--判断当前用户是否为超级管理员-->
{{ user.is_superuser }}
{% if user.is_superuser or perms.users.add_user_per %}
<p>添加用户管理</p> {% endif %} {% if user.is_superuser or perms.users.del_user_per %} <p>删除用户管理</p> {% endif %} {% if user.is_superuser or perms.users.change_user_per %} <p>修改用户管理</p> {% endif %} {% if user.is_superuser or perms.users.sel_user_per %} <p>查询用户管理</p> {% endif %} {% endblock %}
小礼物走一走,来简书关注我

写了 12690 字,被 14 人关注,获得了 58 个喜欢
关于Oracle 用户权限 Grant和oracle 用户权限的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于3--Jenkins详解 、用户权限、构建maven、参数化构建、8个方法管理 GitHub 用户权限、devops===》Jenkins忘记密码、用户权限、部署远程仓库代码到服务器上、Django-用户权限,用户角色使用指南(转载)的相关知识,请在本站寻找。
本文标签: