博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
arya使用流程
阅读量:4322 次
发布时间:2019-06-06

本文共 3131 字,大约阅读时间需要 10 分钟。

 

1.github中的项目clone到本地(路径在最后),然后将arya文件夹复制到你的django工程中作为一个独立的app,该app实现了RBAC(基于角色的权限访问控制Role-Based Access Control)和CRM(客户关系管理).
完成效果:

 2.setting中注册arya和配置rbac相关设置

INSTALLED_APPS = [     .....    'arya.apps.AryaConfig',]....# ############################## RBAC权限相关配置开始 ############################### session中保存权限信息的KeyRBAC_PERMISSION_URL_SESSION_KEY = "rbac_permission_url_session_key"# Session中保存菜单和权限信息的KeyRBAC_MENU_PERMISSION_SESSION_KEY = "rbac_menu_permission_session_key"RBAC_MENU_KEY = "rbac_menu_key"RBAC_MENU_PERMISSION_KEY = "rbac_menu_permission_key"# 匹配URL时指定规则RBAC_MATCH_PARTTERN = "^{0}$"# 无需权限控制的URLRBAC_NO_AUTH_URL = [    '/login/',    '/logout/',    "/index/",    "/test/",]# 无权访问时,页面提示信息RBAC_PERMISSION_MSG = "无权限访问"#菜单图标MENU_ICONS = ["icon-book", "icon-book", "icon-book", "icon-book", "icon-book"]# ############################## RBAC权限相关配置结束 ##############################

3.在你的用户表(用来作登录验证)中添加一行roles

from django.db import modelsfrom arya.models import Roleclass Account(models.Model):    username = models.CharField("用户名", max_length=64, unique=True)    password = models.CharField("密码", max_length=128)    roles = models.ManyToManyField(to=Role, verbose_name="角色")

4.在你需要arya来管理的app中,新建arya.py,注册你的model

from arya.service import sitesfrom . import modelssites.site.register(models.Account)

 5.在主url中加入arya的路由:

from django.conf.urls import url# from django.contrib import adminfrom arya.service import sitesurlpatterns = [    # url(r'^admin/', admin.site.urls),    url(r'^admin/', sites.site.urls),]
6.在你的登录视图函数中书写如下逻辑,可以根据实际情况自己做修改
  请注意:我默认你的url配置中是有如下配置的.
  login.html和index.html可以暂时使用本demo中的.
from app01 import viewsurlpatterns = [    url(r'^login/$', views.login),    url(r'^logout/$', views.logout),    url(r'^index/$', views.index),]
from django.shortcuts import render,redirectfrom arya.service.rbac import initial_permissionfrom . import modelsdef login(request):    if request.method == "GET":        return render(request, "login.html")    elif request.method == "POST":        username = request.POST.get("username")        pwd = request.POST.get("pwd")        # print("___cookie",request.COOKIES)        obj = models.Account.objects.filter(username=username, password=pwd).first()        if obj:            # 初始化权限            request.session["user_info"] = {
"nid": obj.id} print(request.session["user_info"]) initial_permission(request, obj) return redirect('/index/') else: return render(request, "login.html")def logout(request): request.session["user_info"] = None return redirect("/login/")def index(request): return render(request, "index.html")

7.做数据库迁移

python manage.py makemigrationspython manage.py migrate

 8.启动程序,登录

    1
.可以先在你的用于登录的model中加入测试用的账号密码,如usernme:tom  password:123
    2.如无错误的话,可以看到如下界面
 
     

9.添加一个权限:url为: http://127.0.0.1:8000/admin/arya/permission/

 
 
10.添加一个角色:url为:http://127.0.0.1:8000/admin/arya/role/
 
 
11.为你的account添加一个角色,url为:http://127.0.0.1:8000/admin/app01/account/
 

 

12.修改角色权限或者为用户添加角色后,需要重新登录,session信息刷新后才能看到菜单,我们重新登录,即可看到如下菜单.
 
 
13.然后你就可以为所欲为了,然后有啥问题可以联系我.
 
 Github地址:
 

转载于:https://www.cnblogs.com/hedeyong/p/7965580.html

你可能感兴趣的文章
laravel连接sql server 2008
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
Laravel 的生命周期
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>
Entity Framework 4.3.1 级联删除
查看>>
学习进度
查看>>
github.com加速节点
查看>>
使用Postmark测试后端存储性能
查看>>
NSTextView 文字链接的定制化
查看>>
第五天站立会议内容
查看>>
ATMEGA16 IOport相关汇总
查看>>
JAVA基础-多线程
查看>>
面试题5:字符串替换空格
查看>>
[Codevs] 线段树练习5
查看>>