「Goravel 上新」使用者授權模組,讓你簡單的對非法使用者 Say No!

Bowens發表於2022-11-29

首先,讓我們定義一個規則:使用者只能訪問自己建立的文章。

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...
}

你甚至可以定義 BeforeAfter 進行授權前後的攔截,詳見文件。
Over, 就是如此簡單!

關於 Goravel

Goravel 是一個功能完備、具有良好擴充套件能力的 Web 應用程式框架。作為一個起始腳手架幫助 Golang 開發者快速構建自己的應用。

框架風格與 Laravel 保持一致,讓 PHPer 不用學習新的框架,也可以愉快的玩轉 Golang!致敬 Laravel!

Welcome star, PR and issues!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
唯有所執,方有所成。

相關文章