当前位置: 首页 > news >正文

网站建设福永附近网络公司建设营销网站的四个步骤

网站建设福永附近网络公司,建设营销网站的四个步骤,html网站简易模板,遵义市城乡建设局安管人员考试网站1. 核心概念 核心配置中含两部分模型配置以及策略配置#xff0c;给出两个示范配置#xff0c;在此基础上对实际请求进行分析。 1.1 Model 模型文件#xff0c;存储了请求定义(request_definition)#xff0c;策略定义(policy_definition)#xff0c;匹配规则(matchers)给出两个示范配置在此基础上对实际请求进行分析。 1.1 Model 模型文件存储了请求定义(request_definition)策略定义(policy_definition)匹配规则(matchers)以及匹配的综合结果(policy_effect) [request_definition] r sub, obj, act[policy_definition] p sub, obj, act[policy_effect] e some(where (p.eft allow))[matchers] m r.sub p.sub r.obj p.obj r.act p.act1.2 Policy 以下为示策略文件policy.csv含有两条策略策略除了存储在文件中还可以保存到数据库后续中我们用到GORM Adapter保存到数据库中 p,leo,/api/user,GET p,leo,/api/user,POST1.3 实例分析 以用户leo通过GET方法访问后台API:/api/user为例 #mermaid-svg-a6RMBmedYEiTXOHK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .error-icon{fill:#552222;}#mermaid-svg-a6RMBmedYEiTXOHK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-a6RMBmedYEiTXOHK .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-a6RMBmedYEiTXOHK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-a6RMBmedYEiTXOHK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-a6RMBmedYEiTXOHK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-a6RMBmedYEiTXOHK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-a6RMBmedYEiTXOHK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-a6RMBmedYEiTXOHK .marker.cross{stroke:#333333;}#mermaid-svg-a6RMBmedYEiTXOHK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-a6RMBmedYEiTXOHK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .cluster-label text{fill:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .cluster-label span{color:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .label text,#mermaid-svg-a6RMBmedYEiTXOHK span{fill:#333;color:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .node rect,#mermaid-svg-a6RMBmedYEiTXOHK .node circle,#mermaid-svg-a6RMBmedYEiTXOHK .node ellipse,#mermaid-svg-a6RMBmedYEiTXOHK .node polygon,#mermaid-svg-a6RMBmedYEiTXOHK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-a6RMBmedYEiTXOHK .node .label{text-align:center;}#mermaid-svg-a6RMBmedYEiTXOHK .node.clickable{cursor:pointer;}#mermaid-svg-a6RMBmedYEiTXOHK .arrowheadPath{fill:#333333;}#mermaid-svg-a6RMBmedYEiTXOHK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-a6RMBmedYEiTXOHK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-a6RMBmedYEiTXOHK .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-a6RMBmedYEiTXOHK .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-a6RMBmedYEiTXOHK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-a6RMBmedYEiTXOHK .cluster text{fill:#333;}#mermaid-svg-a6RMBmedYEiTXOHK .cluster span{color:#333;}#mermaid-svg-a6RMBmedYEiTXOHK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-a6RMBmedYEiTXOHK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 根据request_definition对应request中三个参数为 matchers根据条件匹配策略匹配返回true matchers根据条件匹配策略不匹配的忽略 matchers根据条件匹配策略不匹配的忽略 policy_effect计算影响,some(where (p.eft allow))表示其中一条匹配即通过 用户leo通过GET方法访问/api/user (leo, /api/user, GET)-(r.sub, r.obj, r.act) 匹配策略1 匹配策略2 匹配策略.... 返回最终结果通过或者拒绝 1.3 ACL模型和RBAC模型 Casbin模型比较多只需理解以下两种模型基本能满足绝大部分业务需求 1.3.1 ACL模型 简单理解如上面model.conf中不包含用户角色组策略中都是针对单个用户用户的请求和动作直接匹配策略并计算结果 1.3.2 RBAC模型 简单理解用户关联到角色组策略定义中针对组做策略 后续gin casbin鉴权中选用该模型 后续示例中model.conf [request_definition] r sub, obj, act[policy_definition] p sub, obj, act[role_definition] g _, _[policy_effect] e some(where (p.eft allow))[matchers] m g(r.sub, p.sub) r.obj p.obj r.act p.act后续示例中policy.csv 定义了两条策略admin组能访问的资源以及操作以及用户leo属于admin组 p,admin,/api/user,GET p,admin,/api/user,POSTg,leo,admin2. 库使用 2.1 Enforcer 执行器概念 Casbin 库中核心概念为执行器Enforcer 使用casbin.NewEnforcer(./model.conf, ./policy.csv)加载模型和策略 调用Enforcer的Enforce(r.sub, r.obj, r.act)方法检查鉴权结果 package mainimport (fmtgithub.com/casbin/casbin/v2 )func CheckPermission(e *casbin.Enforcer, sub, obj, act string) {ok, err : e.Enforce(sub, obj, act)if err ! nil {panic(check enforce error: err.Error())}if ok {fmt.Printf(用户: %s 访问资源: %s 使用方法: %s 检查通过\n, sub, obj, act)} else {fmt.Printf(用户: %s 访问资源: %s 使用方法: %s 检查拒绝\n, sub, obj, act)} }func main() {enforcer, err : casbin.NewEnforcer(./model.conf, ./policy.csv)if err ! nil {panic(new enforcer error: err.Error())}// 预期输出:// 用户: leo 访问资源: /api/user 使用方法: GET 检查通过CheckPermission(enforcer, leo, /api/user, GET)// 预期输出:// 用户: leo 访问资源: /api/user 使用方法: DELETE 检查拒绝CheckPermission(enforcer, leo, /api/user, DELETE) } 2.2 adapter 适配器概念 casbin.NewEnforcer(“./model.conf”, “./policy.csv”)中默认从文件加载是内置的名为File Adapter (内置)实现的 后续中我们需将权限存储到DB中使用的适配器为GORM Adapter使用如下: package mainimport (loggithub.com/casbin/casbin/v2gormadapter github.com/casbin/gorm-adapter/v3github.com/glebarez/sqlitegorm.io/gorm )func main() {db, err : gorm.Open(sqlite.Open(test.db), gorm.Config{})if err ! nil {panic(failed to connect database)}a, err : gormadapter.NewAdapterByDB(db)if err ! nil {panic(new gorm adapter error: err.Error())}e, err : casbin.NewEnforcer(./model.conf, a)if err ! nil {panic(new casbin enforcer error: err.Error())}e.LoadPolicy()// 添加策略ok, err : e.AddPolicy(admin, /api/user, GET)log.Println(add admin /api/user GET: , ok, err)ok, err e.AddGroupingPolicy(leo, admin)log.Println(add leo to admin group: , ok, err)e.SavePolicy()ok, err e.Enforce(leo, /api/user, GET)log.Println(leo GET /api/user :, ok, err)ok, err e.Enforce(leo, /api/user, DELETE)log.Println(leo DELETE /api/user :, ok, err) }测试结果 2.3 Functions(Matchers中的函数) 上述model.conf中有一个问题访问的url是/api/user/123形式r.obj与p.obj不匹配这时候我们要用到Matchers中的函数,一般选择keyMatch2即可能针对url能满足日常需求 修改后的model.conf [request_definition] r sub, obj, act[policy_definition] p sub, obj, act[role_definition] g _, _[policy_effect] e some(where (p.eft allow))[matchers] m r.sub p.sub keyMatch2(r.obj,p.obj) r.act p.act更多函数参考https://casbin.org/zh/docs/function 函数url模式keyMatch一个URL 路径例如/alice_data/resource1一个URL 路径或*模式下例如/alice_data/*keyMatch2一个URL 路径例如/alice_data/resource1一个URL 路径或:模式下例如/alice_data/:resourcekeyMatch3一个URL 路径例如/alice_data/resource1一个URL 路径或{}模式下例如/alice_data/{resource}keyMatch4一个URL 路径例如/alice_data/resource1一个URL 路径或{}模式下例如/alice_data//{id}/book/{id}keyMatch5a URL path like/alice_data/123/?status1a URL path, a{}or*pattern like/alice_data/{id}/*regexMatch任意字符串正则表达式模式 3. 结语 至此已了解的概念已能满足业务需求下一章将Casbin与Gorm结合起来并实现增删改查功能
http://www.dnsts.com.cn/news/35498.html

相关文章:

  • 下载吧网站整站源码英语网站的建设需要
  • 绍兴做网站公司哪家好中国制造app
  • 夸克建站系统官网wordpress使用教程
  • 有没有做链接的网站企业做网站找谁
  • 手机客户端网站怎么做seo全网图文推广
  • 手机app wap网站模板下载seo搜索优化是什么呢
  • 做外贸需要哪些网站搜索引擎平台排名
  • 西昌有做网站的公司吗有专业做网站的吗
  • 服务器架构做网站那个网站域名估价好
  • wordpress禁止生成多个缩略图重庆网站seo推广
  • 个人网站,可以做淘宝客吗网站建设与管理 自考
  • 上传网站数据库吗国内的平面设计网站
  • 北京 网站设计网站301了不知道在哪做的
  • 网站建设为主题调研材料求2021没封的良心网址
  • 动漫网站开发网站后台如何添加代码
  • 在易语言里面做网站专业做网站app的公司
  • 建设银行辽宁省分行网站wordpress好看的个人博客主题
  • 建网站多少钱专业外贸平台推广
  • 建网站wordpress推广引流渠道平台
  • wordpress 会话已过期优化大师下载
  • 现在还有网站做校内网吗大连 做网站公司
  • 游戏网站建设公司wordpress修复插件
  • wordpress无法访问站点定制手机app价格
  • 网站建设经理岗位职责网站版权信息修改
  • 中通建设工程管理公司网站wordpress php安装
  • 网站经常做封面的那些番号建设公司自己的网站
  • 经典软文案例100例海外seo
  • 网站多语言包装设计网页
  • 网站建设mdf平面设计鉴赏网站
  • 附近手机网站建设市场营销成功案例分析