首页 > 其他分享 >「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!

「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!

时间:2022-11-29 22:36:31浏览次数:64  
标签:string No update facades 用户 Goravel Gate post delete

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

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!

标签:string,No,update,facades,用户,Goravel,Gate,post,delete
From: https://blog.51cto.com/u_15875870/5897168

相关文章

  • zsh: command not found: brew 报错解诀办法
    目录场景解决方案场景在使用命令行安装东西的时候提示brewinstallmysql-connector-c错误提示:zsh:commandnotfound:brew解决方案安装homebrewhttps://gi......
  • Unity用户手册-EditorWindow
    UnityEditor扩展概览unityeditor是一个通用的编辑器,提供了unity内部对象的创建,预览,编辑的功能及可视化界面。但对于特定类型的游戏开发可能还不能完全满足需求,还要根据程......
  • node.js搭配mssql模块连接SQL Server数据库,简单查询数据库数据
    node版本:V6.18.0mssql版本:V9.0.1安装首先安装mssql模块npminstallmssql项目中导入//ESM导入方式importsqlfrom'mssql'准备要连接的数据库配置mssql通过......
  • DASCTF NOV X联合出题人-PWN
    太忙了,下午4点才开始做,,剩下的以后补上签个到逻辑很简单两个功能的堆,一个就是申请heap、还有一个是检验如果校验通过就会得到flag申请模块​中间0x886是个很恶心的东西......
  • Unity用户手册-Mesh合批
    Mesh合批把很多静止的模型,标记为BatchingStatic,原本需要把模型一个个送到GPU渲染,Unity会把相同材质相同纹理相同Shader的模型合批成一个大的模型,送到GPU进行渲染,这样就减少......
  • Unity用户手册-Unity与Android、iOS互相调用
        C#是以Assembly(汇编集)为一个基本单位组织代码的,dll就是一个assemble,dll之间有加载依赖顺序。dll是windows平台上的动态库,而so是linux平台上的动态库,最后.a是IOS......
  • cannot connect to the Docker daemon at /var/run/docker.sock Mac Docker Desktop
    CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.Isthedockerdaemonrunning?JetBrainsIDE在配置Docker连接的时候提示这个错误,找了一下没......
  • Kernel分析—进程创建后用户栈是怎么分配的
    1. Shell终端中执行可执行文件过程简述:(1)读取用户由键盘输入的命令行。(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve()内部处理所要求的形式。(3......
  • 练习_for循环创建用户
    #!/usr/bin/bashread-p"pleaseinputnumber:"numif[[!"$num"=~^[0-9]+$]];thenecho"errornumber"exitfiread-p"pleaseinputpref......
  • jupyter notebook 踩坑记录
    1.安装软件路径不能是中文2.用户名不能是中文,否则找不到解释器#https://blog.csdn.net/weixin_51684729/article/details/124056544"""1.Win+R打开运行窗口,输入regedi......