Laravel 5 文件系统 - 目录权限

Laravel 5 Filesystem - Directory Permissions

我目前正在 Laravel 5 中编写一个带有登录系统的文件系统,目前每个用户都可以创建文件夹和上传文件,但是当我从文件夹 [=14= 复制路径时] 从用户“1”注销并使用用户“2”登录并将路径粘贴到浏览器中,我可以从用户“1”访问文件夹 "A"。 我希望只有创建文件夹的人才能打开它并上传文件。我想要通过用户 ID 进行身份验证,以检查当前尝试打开 folder/path 的用户是否是创建者并有权执行此操作。

public function mkdir(Request $request) {
    $validator = Validator::make ( $request->all (), [ 
            'dirname' => 'required|max:20' 
    ] );

    if ($validator->fails ( $request )) {

        return redirect ( 'filesystem' )->withErrors ( $validator )->withInput ();
    } else {
        $id = Auth::user ()->id;

        $dir = $request->dir . "/" . $request->dirname;

托盘:

因为文件夹结构和文件夹的所有权设置为服务器上的用户,所以在没有某种数据库的情况下做这样的事情是不可能的。我的建议类似于 noodles_ftw 的建议。

创建一个 table folderPermissions,在这个文件夹中,它会有几列。所有者,路径

所有者是创建文件夹的用户的 ID,路径是文件夹的路径。

接下来您将创建某种中间件或其他检查以简单地说出以下内容

// get current user id
// get folders owned by that user
// if user is not allowed to view folder
    // return an error letting them know

// continue to do what you need to do with the folder

这将允许您 运行 您的检查,甚至警告用户试图访问他们不允许访问的文件夹。

您在这里的其他选择之一是使用服务器 .htaccess 和 .htpasswd 文件。这将允许您设置允许进入该文件夹的用户列表。您可能希望在用户创建新文件夹时创建这些文件。在为用户生成 .htpasswd 文件时使用数据库中的用户密码和用户名。

查找有关此解决方案的更多信息from the documentation