2016-02-08 111 views
0

我正在用Laravel 5编写一个登录系统的文件系统,此刻每个用户都可以创建文件夹并上传文件,但是当我从文件夹“A”复制路径时,从用户“1”注销并用用户“2”登录并在浏览器中粘贴路径,我已经从用户“1”获取文件夹“A”。 我希望只有创建文件夹的人可以打开它并上传文件。我想通过用户标识进行身份验证,该用户标识检查当前正在尝试打开文件夹/路径的用户是否为创建者并且有权执行此操作。Laravel 5 Filesystem - 目录权限

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; 
+1

你能显示你已有的任何代码吗? –

+0

是的,我在上面添加了一些代码。 – Trayer

+0

您应该将用户标识和文件夹名称保存在数据库的表中,然后在'else'块中使用该数据来检查用户是否有权写入目录。 –

回答

0

Trayer:

因为该文件夹的文件夹结构和所有权设置为用户的服务器上,做这样的事情没有某种形式的数据库是不可能的。我会建议的是像noodles_ftw建议的东西。

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

拥有者将是创建该文件夹的用户的id,路径将是该文件夹的路径。

接下来你会建立某种形式的中间件或其他检查,以baiscally说以下

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