ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Laravel Restify授权实战:用Laravel Policies同时保护人类与AI Agent的访问

Laravel Restify授权实战:用Laravel Policies同时保护人类与AI Agent的访问 Laravel Restify授权实战用Laravel Policies同时保护人类与AI Agent的访问【免费下载链接】laravel-restifyLaravel API for Ai Agents and humans.项目地址: https://gitcode.com/gh_mirrors/la/laravel-restifyLaravel Restify 是面向人类与 AI Agent 的 Laravel API 框架。本篇实战教程将带你用 Laravel Policies 实现一套统一的授权体系无论请求来自浏览器、移动端的 REST API还是来自 Claude 等 AI Agent 的 MCP 工具调用都走同一套权限规则一次编写、处处生效。为什么授权对 AI Agent 时代格外重要过去API 的访问者只有人类用户和前端应用现在AI Agent 也成了用户。它们会 通过MCPModel Context Protocol调用你的posts-index-tool、posts-store-tool等工具 批量创建、更新、删除数据 读取全量列表来理解你的业务数据如果没有统一授权AI Agent 很容易绕过你精心设计的权限边界。Restify 的答案很简单REST 端点和 MCP 工具共享同一套 Laravel Policies你不需要为 AI 单独写一套安全逻辑。人类用户 ──REST API──┐ ├──► Laravel Policies ──► 数据库 AI Agent ──MCP工具──┘两道防线全局 Gate 与模型 PolicyRestify 的授权分两层理解这一层结构是实战的关键。第一层viewRestify全局门禁这是一个 Laravel Gate作为所有 Restify 仓库的入口检查。它在 src/RestifyApplicationServiceProvider.php 中定义并检查✅ 只限制能不能进 Restify 大门⚠️ 仅在非 local 环境生效 推荐写法放行所有已登录用户把细粒度权限交给下面的 Policy第二层模型 Policy 的 CRUD 方法在app/Policies/下为每个模型写一个 PolicyRestify 会自动映射到具体操作Policy 方法保护的操作人类REST与 AIMCP同时受控allowRestify能否访问该仓库✅posts-index-tool等全部工具show查看单条记录 / 列表过滤✅GET /posts/{id}posts-show-toolstore创建记录✅POST /postsposts-store-toolstoreBulk批量创建✅ 批量端点 批量工具update/updateBulk更新记录✅ PUT/PATCH 更新工具delete/deleteBulk删除记录✅ DELETE 删除工具attachPost/detachPost多对多关联✅ 关系操作可以用一条命令快速生成脚手架php artisan restify:policy PostPolicy --modelPost一个典型的所有权 角色写法以帖子为例// PostPolicy public function show(User $user, Post $model): bool { if ($user-hasRole(admin)) { return true; // 管理员看全部 } if ($user-id $model-author_id) { return true; // 作者看自己的草稿 } return $model-status published; // 普通用户只看已发布 }这段逻辑对人类和 AI Agent完全一致AI 若只拿到普通用户的 Token它调用posts-show-tool时同样只能看到已发布内容。AI Agent 如何登录——Sanctum Token 复用AI Agent 不直接认证而是复用人类用户颁发的 Sanctum Bearer Token流程只有 4 步 用户为自己的账号生成 Sanctum Token 把 Token 交给 AI Agent配置 MCP 服务时填入 Agent 在所有 MCP 工具调用中携带Authorization: Bearer token️ Restify 按 Token 对应的用户身份应用同一套 Policy给 AI Agent 配置 MCP 服务器时建议加上与 REST 一致的中间件use Binaryk\LaravelRestify\MCP\RestifyServer; use Binaryk\LaravelRestify\Http\Middleware\AuthorizeRestify; use Laravel\Mcp\Facades\Mcp; Mcp::web(restify, RestifyServer::class) -middleware([auth:sanctum, AuthorizeRestify::class]);AuthorizeRestify中间件见 src/Http/Middleware/AuthorizeRestify.php会自动校验viewRestifyGate确保 MCP 与 REST 的入口规则完全相同。进阶建议为 AI Agent 创建专用账号并分配ai-agent角色在 Policy 中单独控制其能力范围例如AI 可读全部已发布内容但不可删除。这样即使 Token 泄露影响面也被限制在 AI 角色的权限内。字段级授权比 Policy 更细一刀Policy 管能不能操作而 Repository 的fields()方法还能管能看到/改哪些字段管理员才能看到internal_notes等敏感字段非管理员的邮箱值自动打码关联字段related()按角色动态返回这意味着同一个GET /posts/{id}接口管理员、作者、访客和 AI Agent 看到的 JSON 结构各不相同——数据本身即授权AI Agent 天然拿不到它不该见的字段。常见坑与避坑清单坑表现正确做法模型没注册 Policy该仓库所有请求 403在AuthServiceProvider中注册Post::class PostPolicy::classPolicy 缺少对应方法对应端点直接拒绝补齐show/store/update/delete等方法allowRestify写死 false连列表都访问不了放行已登录用户细粒度交给其他方法忘记配置 MCP 中间件AI 调用绕过了 Gate 检查MCP 路由加上AuthorizeRestify性能提示Policy 判定结果支持缓存。开启 config/restify.php 中的cache.policies.enabled后src/Cache/PolicyCache.php 会按用户 仓库 资源缓存判定结果默认 60 秒对 AI Agent 的高频批量调用尤其有效。30 秒上手清单✅php artisan restify:policy生成带 CRUD 授权方法的 Policy✅ 在RestifyServiceProvider中放行viewRestifyGate✅ 在 Policy 中实现角色 所有权判断人类与 AI 自动共用✅ 为 AI Agent 配置 Sanctum Token 与AuthorizeRestify中间件✅ 用fields()做字段级脱敏控制敏感数据可见性更多细节可查阅仓库内文档 docs-v3/content/docs/2.auth/2.authorization.md、MCP 文档 docs-v3/content/docs/6.mcp/1.mcp.md以及核心实现 src/Traits/AuthorizableModels.phpPolicy 判定逻辑与 src/MCP/RestifyServer.phpMCP 服务器入口。一句话总结在 Laravel Restify 中Laravel Policies 就是人类与 AI Agent 共用的守门人——写一次策略两种客户端同时安全。【免费下载链接】laravel-restifyLaravel API for Ai Agents and humans.项目地址: https://gitcode.com/gh_mirrors/la/laravel-restify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表