zoukankan      html  css  js  c++  java
  • 权限系统 02

    # 关于在白名单里添加“/”没有加$的问题
    # 匹配不上返回None
    # 匹配上返回对象
    import re
    ret=re.match("/$","/orders/")
    print(ret)  # None
    
    
    
    ret1=re.match("/","/orders/")
    print(ret1)  # <_sre.SRE_Match object; span=(0, 1), match='/'>
    什么是权限:一个包含正则的url


    关于某个角色拥有查看用户权限,但无添加用户权限

    能匹配 /orders/ 但手动添加orders/add也能访问到

    在中间件进行匹配url没有加$

    粒度到按钮级别

    没有权限的用户不显示按钮

    views

    def orders(request):
        permission_list=request.session.get("permission_list")    #["/orders/"]  订单页面在视图中能知道用户的权限   传到模板
        return render(request,"orders.html",locals())   
    
    
    def orders_add(request):
    
        return HttpResponse("添加订单")

    HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>订单页面</title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.css">
    </head>
    <body>
    
    <h3>订单列表</h3>
    
    <div class="col-md-6">
        {% if "/orders/add/" in permission_list %}
            <p><a href="/orders/add"><button class="btn btn-primary pull-right">添加订单</button></a></p>
        {% endif %}
    
    <table class="table table-striped">
        <tr>
            <th>订单编号</th>
            <th>订单日期</th>
            <th>商品名称</th>
        </tr>
        <tr>
            <td>123456</td>
            <td>2016-12-16</td>
            <td>草莓</td>
        </tr>
    </table>
    </div>
    </body>
    </html>

    但是上面有个局限性,就是不能进行正则判断

    思路:给权限表进行分组,将权限之间的关系描述出来

    from django.contrib import admin
    
    # Register your models here.
    
    
    from .models import *
    
    admin.site.register(UserInfo)
    admin.site.register(Role)
    admin.site.register(PermissionGroup)
    
    
    
    # 修改admin显示页面
    class PermissionConfig(admin.ModelAdmin):
        list_display = ["id","title","url","permission_group"]
        ordering = ["id"]
    admin.site.r
    admin
  • 相关阅读:
    js es6遍历对象的6种方法
    MySQL、Redis、MongoDB网络抓包工具
    SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化(C#自带函数的3到4倍速度)。
    设置EntityFramework中decimal类型数据精度问题(EF默认将只会保留到2为精度)
    IIS资料
    RabbitMQ
    微信公众平台生成带场景参数二维码
    .net Core资料
    微信字体放大影响布局的处理
    VirtualBox虚拟机下安装Win10性能优化
  • 原文地址:https://www.cnblogs.com/jassin-du/p/8516342.html
Copyright © 2011-2022 走看看