【问题标题】:Laravel 5 Filesystem - Directory PermissionsLaravel 5 文件系统 - 目录权限
【发布时间】:2016-02-08 15:15:23
【问题描述】:

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

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;

【问题讨论】:

  • 你能显示任何你已经拥有的代码吗?
  • 是的,我在上面添加了一些代码。
  • 您应该将用户 ID 和文件夹名称保存在数据库的表中,然后在您的 else 块中,使用该数据检查用户是否有权写入目录。

标签: laravel authentication filesystems


【解决方案1】:

托盘:

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

创建一个表文件夹权限,在这个文件夹中,它将有几列。所有者,路径

Owner 是创建文件夹的用户的 ID,path 是文件夹的路径。

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

// 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

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 2014-08-28
    • 2023-03-16
    • 2012-04-06
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    相关资源
    最近更新 更多