权限组件应用

4.权限组件的应用 **

1. 拷贝rbac组件到新项目中,并且注册

2. 迁移数据库

1. 修改rbac用户表

ManyToManyField 中 关联写上Role ,不要写字符串

```
class User(models.Model):
"""用户表"""
# name = models.CharField(‘用户名‘, max_length=32)
# pwd = models.CharField(‘密码‘, max_length=32)
roles = models.ManyToManyField(Role, verbose_name=‘用户所拥有的角色‘, blank=True)

class Meta:
abstract = True # 迁移的时候不生成表,继承使用 当基类
```

2. 已有的用户表继承rbac的User

```
class UserProfile(User)
```

3. 执行数据库迁移的命令

python manage.py makemigrations

python manage.py migrate

3. 配置上rbac的路由

```python
url(r‘^rbac/‘,include(‘rbac.urls‘,namespace=‘rbac‘)),
```

4. 角色管理

http://127.0.0.1:8001/rbac/role/list/

添加角色 http://127.0.0.1:8001/rbac/role/add/

5. 菜单管理

http://127.0.0.1:8001/rbac/menu/list/

添加菜单 http://127.0.0.1:8001/rbac/menu/add/

6. 批量操作权限

http://127.0.0.1:8001/rbac/multi/permissions/

录入权限的标题、分配一级菜单下的二级菜单和子权限

7. 分配权限

http://127.0.0.1:8001/rbac/distribute/permissions/

权限分配的视图中 rbac的用户类替换成 使用用户表的类

添加用户 给用户分配角色 给角色分配权限

8. 应用上权限

1. 加上权限的中间件

```
MIDDLEWARE = [
...
‘rbac.middlewares.rbac.RbacMiddleWare‘
]
```

2. 添加上权限的相关配置

```
# 权限相关的配置

# 白名单
WHITE_LIST = [
r‘^/crm/login/$‘,
r‘^/crm/reg/$‘,
r‘^/admin/.*‘,
]

# 免认证的URL地址
NO_PERMISSION_LIST = [
r‘^/crm/index/$‘,
]

# 存权限的SESSION KEY
PERMISSION_SESSION_KEY = ‘permission‘

# 存菜单的SESSION KEY
MENU_SESSION_KEY = ‘menu‘
```

3. 登录成功权限信息的初始化

```Python
from rbac.service.init_permission import init_permission
认证成功:
# 进行权限信息的初始化(保存权限信息 菜单信息 登录状态)
init_permission(request,obj)

```

9. 动态生成二级菜单

```
<div class="menu-body">
{% load rbac %}
{% menu request %}
</div>
```

加上CSS JS

```
<link rel="stylesheet" href="{% static ‘rbac/css/menu.css‘ %} "/>
<script src="{% static ‘rbac/js/menu.js‘ %} "></script>

```

10. 路径导航

```
{% breadcrumb request %}
```

11. 权限控制到按钮级别

```html
{% if request|has_permission:‘add_class‘ %}
<a class="btn btn-primary" href="{% reverse_url request ‘add_class‘ %}">添加</a>
{% endif %}
```

原文地址:https://www.cnblogs.com/huhuxixi/p/10786189.html

时间: 2024-08-30 17:59:52

权限组件应用的相关文章

ASP.NET通用权限组件实现一

沙发(SF)通用权限验证组件 开篇 上一篇提到了通用权限的设计思路,根据设计思路一步一步的来实现一个相对通用的权限验证组件.在VS2010下用C#语言基于.net framework2.0框架实现具体功能. 配置文件 配置文件为XML格式(SFPermission.xml)公有四个节点分类: 一.AppSet节点:此节点配置一些基础信息. 1 <AppSet> 2 <!--数据库节点名称(必须在Web.config的connectionStrings节点下面)--> 3 <a

ASP.NET通用权限组件思路设计

开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到控制权限的目的,这样就可以减少通常要在每个页面或按钮都要添加的权限验证代码. 通常的权限验证模式 一般的权限验证会控制到菜单(页面)就可以满足,复杂一点的会要求控制到按钮(功能点),这个都需要做一下几点工作: 1.按权限生成菜单,这是所有系统都要做的: 2.在每个页面的开始处添加登录和权限的验证,调

权限组件之录入数据

权限组件之录入数据 1.新建一个django项目 rbac 2.增加一个app应用 3.什么是rbac??? 生成表 4.3张表一写,会生成5张表 5.数据库迁移 6.查看表,没有我们自己写的表???都是自带的表 7.settings配置 8.入口文件 9.重新数据化迁移,查看表 admin  添加数据 10.添加数据   admin 11.创建管理员,用户名.(邮箱可以不用填写).密码 12.登入admin 13.默认没有我们自己写的app里的表,需要注册才会显示表 14.第三张表不用加. 1

权限组件之录入获取登入用户的所有权限

权限组件之录入获取登入用户的所有权限 1.urls.py 2.views.py get请求 3.login.html 页面 post请求 4.用户名或密码错误重新登入 验证用户名密码 登入成功之后做什么呢??? session 5.登入成功可以写session值,下次查看别的页面就知道是谁了. pk指的的主键 6.查看 django_session 表 随机字符串={user_id=3,}   通过取当前用户的id--->然后就可以取当前用户的所有信息. 获取当前用户的所有权限 7.获取当前用户

Django REST framework —— 权限组件源码分析

在上一篇文章中我们已经分析了认证组件源码,我们再来看看权限组件的源码,权限组件相对容易,因为只需要返回True 和False即可 代码 1 class ShoppingCarView(ViewSetMixin, APIView): 2 permission_classes = [MyPermission, ] 3 def list(self,request, *args, **kwargs): 4 """ 5 查看购物车信息 6 :param args: 7 :param k

RestFramework之权限组件

一,RestFramework之权限组件源码解析 restframework的权限组件与认证组件源码类似,都需要我们自己写一个类,然后放在 permission_classes中,或者全局settings中配置: 我们直接看在dispatch()中的权限组件部分干了什么. def initial(self, request, *args, **kwargs): """ Runs anything that needs to occur prior to calling the

RESTful-rest_framework认证组件、权限组件、频率组件-第五篇

认证组件格式: 1 写一个认证类 from rest_framework.authentication import BaseAuthentication class MyAuth(BaseAuthentication): def authenticate(self,request): # request 是封装后的 token = request.query_params.get('token') ret = models.UserToken.objects.filter(token=toke

DAY99 - Rest Framework(四)- 认证组件和权限组件

一.认证组件 1.使用 # 模型层 class User(models.Model): name = models.CharField(max_length=32) pwd = models.CharField(max_length=32) class UserToken(models.Model): user = models.OneToOneField(to='User') token = models.CharField(max_length=64) #myAuth.py from app

2 权限(组件)

1. 问:为什么程序需要权限控制? 程序开发时的权限控制,对于不同用户使用系统时候就应该有不同的功能,如: 普通员工 部门主管 总监 总裁 所以,只要有不同角色的人员来使用系统,那么就肯定需要权限系统. 2. 问:为什么要开发权限组件? 答:假设你今年25岁,从今天开始写代码到80岁,每年写5个项目,那么你的一生就会写275个项目,保守估计其中应该有150+个都需要用到权限控制,为了以后不再重复的写代码,所以就开发一个权限组件以便之后55年的岁月中使用. 亲,不要太较真哦,你觉得程序员能到80岁

Django的rest_framework的权限组件和频率组件源码分析

前言: Django的rest_framework一共有三大组件,分别为认证组件perform_authentication,权限组件check_throttles: 我在前面的博客中已经梳理了认证组件,不知道大家有没有看懂:在这里我把认证的组件的博客地址在贴出来,不清楚的人可以看下 局部设置认证组件的博客:https://www.cnblogs.com/bainianminguo/p/10480887.html 全局设置认证组件的博客:https://www.cnblogs.com/baini