首先,让我们定义一个规则:用户只能访问自己创建的文章。

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!

最新文章

  1. JS案例之3——倒计时
  2. ActiveMQ(li)
  3. New Features In SNMPv3 - SNMP Tutorial
  4. Network Wars-ZOJ2676最小割+01规划
  5. MatLab 组件大全
  6. ENTBOOST 2014.180L 发布,开源企业IM免费企业即时通讯
  7. android 解决启动页面加载图片空白以及去掉标题栏
  8. MVC client validation after PartialView loaded via Ajax MVC3中 弹出 Dialog时候 提交的时候 使用 Jquery 不验证 form表单 的解决办法
  9. Oracle 11g详细安装配置教程
  10. NLB+Application Request Route 网路负载均衡
  11. 【RevolC FaeLoN Uva 10972】
  12. C# 创建Dll文件供程序调用方法
  13. hdoj:2046
  14. Python中os与sys模块的区别
  15. TStrings与Memo.Lines赋值的问题
  16. 学习shell脚本之前的基础知识(一)(学习记录帖)
  17. CAC的Debian-8-64bit安装BBR正确方式是?
  18. C++的Enum hack
  19. Java集合框架:EnumMap
  20. pycharm PYTHONPATH

热门文章

  1. Python数据科学手册-Pandas:累计与分组
  2. kindeditor获取html内容之终极大法
  3. Form表单数据
  4. windows系统下使用bat脚本文件设置MySQL系统环境变量
  5. Docker MySql 查看版本的三种方法
  6. Pjax 下动态加载插件方案
  7. PAT (Basic Level) Practice 1013 数素数 分数 20
  8. C++ 右值引用与一级指针
  9. Pycharm安装使用
  10. spring-boot-maven-plugin报红问题