Casbin之ABAC
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Casbin之ABAC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                文章目錄
- Casbin之ABAC
- 1.model.conf文件
- 2.Policy.conf文件
- 3.main
- 4.輸出及結構
- 5.講解
 
Casbin之ABAC
1.model.conf文件
[request_definition] r = sub, obj, act[policy_definition] p = sub, obj, act[matchers] m = r.sub.Hour >= 9 && r.sub.Hour < 18 || r.sub.Name == r.obj.Owner[policy_effect] e = some(where (p.eft == allow))2.Policy.conf文件
注意:雖然不需要Policy.conf文件,但是還是得在model.conf定義 [policy_definition] p = sub, obj, act與 [policy_effect] e = some(where (p.eft == allow)) 這兩個都不能少3.main
package mainimport ("fmt""github.com/casbin/casbin/v2""log" )type Object struct {Name stringOwner string }type Subject struct {Name stringHour int }func check(e *casbin.Enforcer, sub Subject, obj Object, act string) {ok, _ := e.Enforce(sub, obj, act)if ok {fmt.Printf("%s CAN %s %s at %d:00\n", sub.Name, act, obj.Name, sub.Hour)} else {fmt.Printf("%s CANNOT %s %s at %d:00\n", sub.Name, act, obj.Name, sub.Hour)} }func main() {e, err := casbin.NewEnforcer("./casbin/model.conf")if err != nil {log.Fatalf("NewEnforecer failed:%v\n", err)}o := Object{"data", "dajun"}s1 := Subject{"dajun", 10}check(e, s1, o, "read")s2 := Subject{"lizi", 10}check(e, s2, o, "read")s3 := Subject{"dajun", 20}check(e, s3, o, "read")s4 := Subject{"lizi", 20}check(e, s4, o, "read") }4.輸出及結構
5.講解
總結
以上是生活随笔為你收集整理的Casbin之ABAC的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 高等院校毕业生登记表计算机水平怎么填,关
- 下一篇: 数据搜集网站
