Laravel 5文件系统 - 目录权限

时间:2016-02-08 15:15:24

标签: laravel authentication filesystems

我现在正在Laravel 5中使用登录系统编写文件系统,此时每个用户都可以创建文件夹并上传文件,但是当我从文件夹中复制路径时#34; A&#34 ;来自User" 1"并注销并使用User" 2"并在浏览器中粘贴路径,我有访问文件夹" A"来自User" 1"。 我希望只有创建文件夹的人才能打开它并上传文件。我希望通过用户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;

1 个答案:

答案 0 :(得分:0)

Trayer:

由于文件夹的文件夹结构和所有权设置为服务器上的用户,因此无法在没有某种数据库的情况下执行此类操作。我建议的是像noodles_ftw所暗示的那样。

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

所有者将是创建该文件夹的用户的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