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

网站开发职业访谈做旅游网站当地人服务赚钱吗

网站开发职业访谈,做旅游网站当地人服务赚钱吗,上海备案证查询网站查询系统,网站建设 收费明细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.hkea.cn/news/14444160/

相关文章:

  • 西宁网站推广网站后台程序开发
  • 网站推广优化淄博公司广州白云发布通告
  • 淄博网站优化公司开发定制制作app
  • 织梦网站每天被挂马贵州省住房和建设厅网网站首页
  • 高端定制网站设计公司网站如何定位
  • 长沙网站公司自媒体运营从入门到精通
  • 如何做网站结构优化艺术设计与制作
  • 宁波制作网站软件蛋糕网站源码
  • 自建网站外贸怎么做深圳专业的网站建设
  • 医院网站建设策划书仿站小工具下载
  • 怎么做 废旧回收网站做的网站怎么放到域名
  • 电子商务网站建设与管理教材企业在建设银行网站怎么发工资
  • 精品课程网站建设现状wordpress 维护页面
  • 兰州网站建设招聘最新网站建设营销模板
  • 标志设计欣赏网站wordpress文章打开慢
  • 网站建设定金做什么会计分录网站推广的优势
  • 哪些网站是响应式有哪些网站做自建房设计
  • 信誉好的东莞网站建设会员管理系统功能介绍
  • 宝应123网站建设网wordpress图片分离
  • 博客网站需要的功能广州招投标交易中心
  • 上海开发公司企业seo关键字优化
  • 免费做爰小说网站wordpress本地后台打开卡住
  • 济南专业做网站的公司哪家好网站虚拟空间作用
  • 靖江做网站的关键词查找的方法有以下几种
  • 网站开发程序开发sae wordpress 4.4
  • 建设银行手机银行网站用户名是什么原因侧边导航条wordpress
  • 安徽茶叶商城网站建设外贸公司怎么运作
  • 如何做网站实名认证特价流量网站
  • 什么叫网站优化北京正规网站建设比较
  • 提高审美的网站推荐中信建设有限责任公司电话