
本文介绍如何利用 Laravel 框架,安全地提供 phpDocumentor 生成的文档,使其仅对授权用户可见。通过配置 CI/CD 流程,自动生成文档并存储在指定目录,然后通过自定义路由和中间件,实现文档的访问控制,确保只有登录用户才能访问项目文档。
使用 Laravel 安全地托管 phpDocumentor 文档
phpDocumentor 是一款强大的 PHP 文档生成工具,可以根据代码中的注释自动生成 API 文档。然而,在某些情况下,我们希望这些文档只能被授权用户访问,例如团队内部成员。本文将介绍如何利用 Laravel 框架,安全地托管 phpDocumentor 生成的文档,并实现访问控制。
步骤 1: 生成 phpDocumentor 文档
首先,需要在你的 Laravel 项目中安装 phpDocumentor。你可以通过 Composer 来完成:
composer require phpdocumentor/phpdocumentor
安装完成后,就可以使用 phpDocumentor 生成文档了。在你的 CI/CD 脚本中添加以下命令:
立即学习“PHP免费学习笔记(深入)”;
phpDocumentor -d . -t storage/docs/
这条命令会将当前目录(-d .)下的代码生成文档,并输出到 storage/docs/ 目录(-t storage/docs/)。
重要提示:
请确保 storage/docs/ 目录不会被 .gitignore 文件忽略。如果该目录被忽略,生成的文档将不会被推送到生产服务器,导致无法访问。根据你的项目结构和需求,调整 -d 和 -t 参数。
步骤 2: 配置 Filesystem Disk
为了方便 Laravel 管理生成的文档,我们需要在 config/filesystem.php 文件中添加一个新的 disk 配置:
'disks' => [ // ... other disks 'local-docs' => [ 'driver' => 'local', 'root' => storage_path('docs'), ],],
这个配置定义了一个名为 local-docs 的 disk,它使用 local 驱动,并将根目录指向 storage/docs/。
步骤 3: 创建路由并应用中间件
接下来,我们需要创建一个路由来提供文档服务,并应用 auth 中间件来限制访问。在 routes/web.php 文件中添加以下代码:
use IlluminateSupportFacadesRoute;use IlluminateSupportFacadesStorage;use GuzzleHttpPsr7MimeType;Route::get('/docs/{url?}', function ($url = null) { if (is_null($url)) { $url = 'index.html'; // Or your default doc page } if (!Storage::disk('local-docs')->exists($url)) { abort(404); } $resp = response(Storage::disk('local-docs')->get($url)); $resp->header('content-type', MimeType::fromFilename($url)); return $resp;})->where('url', '(.*)')->middleware('auth');
这段代码定义了一个 /docs/{url?} 路由,它可以接收一个可选的 URL 参数。
如果 URL 参数为空,则默认加载 index.html 文件(或者你的文档首页)。使用 Storage::disk(‘local-docs’)->get($url) 读取指定的文件内容。使用 GuzzleHttpPsr7MimeType::fromFilename($url) 获取文件的 MIME 类型,并设置响应头。使用 middleware(‘auth’) 应用 auth 中间件,确保只有登录用户才能访问该路由。如果文件不存在,返回404错误。
重要提示:
确保没有其他路由使用了 docs 前缀,否则可能会导致冲突。如果你的文档首页不是 index.html,请修改默认 URL。
步骤 4: 访问文档
现在,你可以通过访问 /docs 路由来查看你的 phpDocumentor 文档了。只有登录用户才能访问这些文档。
总结
通过以上步骤,你已经成功地将 phpDocumentor 生成的文档安全地托管在 Laravel 框架中。这种方法不仅可以方便地管理文档,还可以有效地控制文档的访问权限,确保只有授权用户才能查看。记得在 CI/CD 流程中添加文档生成步骤,并定期更新文档,以保持文档的准确性和完整性。
以上就是Laravel 中安全地提供 phpDocumentor 生成的文档的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1324423.html
微信扫一扫
支付宝扫一扫