首先,讓我們定義一個規則:用戶只能訪問自己創建的文章,
facades.Gate.Define("update-post", func(ctx context.Context, arguments map[string]any) *access.Response {
user := ctx.Value("user").(models.User)
post := arguments["post"].(models.Post)
if user.ID == post.UserID {
return access.NewAllowResponse()
} else {
return access.NewDenyResponse("error")
}
})
然后判斷單個權限:
if facades.Gate.Allows("update-post", map[string]any{
"post": post,
}) {
// todo
}
你也可以同時判斷多個權限:
if facades.Gate.Any([]string{"update-post", "delete-post"}, map[string]any{
"post": post,
}) {
// 用戶可以提交update或delete...
}
if facades.Gate.None([]string{"update-post", "delete-post"}, map[string]any{
"post": post,
}) {
// 用戶不可以提交update和delete...
}
你甚至可以定義 Before 與 After 進行授權前后的攔截,詳見檔案,
Over, 就是如此簡單!
關于 Goravel
Goravel 是一個功能完備、具有良好擴展能力的 Web 應用程式框架,作為一個起始腳手架幫助 Golang 開發者快速構建自己的應用,
框架風格與 Laravel 保持一致,讓 PHPer 不用學習新的框架,也可以愉快的玩轉 Golang!致敬 Laravel!
Welcome star, PR and issues!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538701.html
標籤:其他
