gpt4 book ai didi

symfony - 保护特定用户在 Symfony 2 中上传的内容

转载 作者:行者123 更新时间:2023-12-02 07:40:15 25 4
gpt4 key购买 nike

我正在关注 upload tutorial在 Symfony 2 网站上,我将上传到:

web/uploads/{user_salt}/{upload_unique_random_name}.ext

这对于公共(public)可访问文件来说很好。但是我怎样才能保护某些文件呢?例如,在上传表单中,用户可以将文件设置为“公开”或“私有(private)”。我应该如何处理这种情况?

最佳答案

我不会公开这些文件,而是将它们存储在一个私有(private)位置(web 目录之外),创建一个 Bundle 和一个 Controller ,并在 Controller 中执行一个操作它采用文件 ID 并从数据库表中查找其访问级别。如果该文件可公开访问,则提供该文件。如果没有,请确保用户有权查看该文件。

您只需要创建一个 File 实体,以及一个存储用户或用户角色对这些文件的权限的表,以便您可以根据要求交叉检查它们。

虽然它会增加一些文件服务的开销,因为需要进行完整的 Symfony2 请求,而直接通过 apache 或 nginx 服务文件不会有框架堆栈的开销。

希望我已经解释得足够好。

编辑:

如果您通过使用 token (例如通过电子邮件)提供这些图像,那么您可以按照以下方式做一些事情......

示例图像 src 属性:http://yourdomain.com/assets/12/TOKEN

这个路由配置看起来像这样(在 YAML 中):

assets_serve:
pattern: /assets/{id}/{token}
defaults: { _controller: AcmeAssetBundle:Assets:serve }
requirements:
_method: GET

在您的 AcmeAssetBundle 中,您将拥有一个带有 serve 操作的 AssetsController:

class AssetController extends Controller
{
public function serveAction($id, $token = null)
{
//fetch asset record from the database -- which also contains its file path
//check the TOKEN matches the one stored against this image
//set content-type headers and serve the image
}
}

关于symfony - 保护特定用户在 Symfony 2 中上传的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com