码迷,mamicode.com
首页 > 其他好文 > 详细

rbac

时间:2019-03-11 23:50:11      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:weight   color   创建   ini   pat   null   注册   match   strong   

动态生成一级菜单:

model里修改字段为

技术图片

在登录查询用户时,将四个字段的信息都查询出来

并根据用户能够访问的网页权限和显示的菜单 blank表示页面输入可以为空 null=true 表示数据表可以为空

分为权限列表和菜单列表

permission_list

menu_list

权限信息用来验证用户能够访问的页面

菜单列表用来显示用户可以访问的页面

页面可以接受request

request.session.menu来得到ur,title,icon显示在页面上可以用for循环实现

一级菜单优化

在页面request.session.menu是写死了

创建templatetags包

里面my_tags.py

通过sample.inclusion.tags方法

写一个menu函数,再创建一个menu页面menu.html

里面讲request.session.menu内容复制进去

再在原页面写{%load my_tags%}

{%menu request%}导入

给访问的菜单加active属性

在menu函数里

因为知道要访问的页面url request.path_info

循环菜单列表时

如果这个菜单的url和访问页面相同时 用正则进行判断 re.match(item[url],request.path_info):

里面 item[‘class‘]=active加入active属性

在页面用menu.class显示

rbac功能整合

功能整合就是将rbac的所有函数,页面,css都拖到自己的rbac的app里,使rbac独立起来可以随时调用

应用rbac组件的流程

1.将rbac app直接拷贝进来

  在settings里注册rbac app

2 数据库的迁移

  1删除rbac下migrations下除init外的其他py文件

  2执行命令

3 录入权限信息 ,通过Django自带的admin页面

  1.首先创建超级用户

    python manage.py createsuperuser

  2.登录admin

    1.通过rbac里已经写完的角色,权限,用户信息

      录入权限信息 角色信息 用户信息

    2.分配对应的关系

4.登陆成功后调用权限初始化的函数permission

  通过permission将用的权限信息放入权限列表 菜单信息放入菜单列表

  from rbac.service.permission import init_permission

  init_permission(request,obj)  # 传入request和obj

5.在settings里注册权限的中间件

  MIDDLEWARE = [
        ‘rbac.middlewares.rbac.RbacMidlleware‘   
]

  通过rbac的request进行权限的验证

并将权限相关的配置写入settings里

# 权限存放在session中的KEY

PERMISSION_SESSION_KEY = ‘permission‘

# 菜单存放在session中的KEY

MENU_SESSION_KEY = ‘menu‘

# 白名单

WHITE_LIST = [     r‘^/login/$‘,    

r‘^/reg/$‘,    

r‘^/admin/.*‘, ]

6.将动态菜单加入到页面中应用到inclusion_tag

  {% load rbac %}
  {% menu request %}

  在页面里要导入菜单的静态文件

  1.menu.css

有一个母版页面,通过这个母版进行加入

 

  

     

rbac

标签:weight   color   创建   ini   pat   null   注册   match   strong   

原文地址:https://www.cnblogs.com/pythonz/p/10508070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!