通过检查登录用户,使用htaccess保护目录


Protecting directories with htaccess by checking logged in user

我一直在尝试创建一个允许用户上传word文档的网站。。然后,这些文件将存储在网站的公共目录中。问题是,我不希望每个人都访问上传的文档。。我想检查他们是否首先登录,以及他们是否是"授权用户"。。比如说,如果他们的帐户级别为50或更高,那么他们可以打开目录。。

有没有我可以通过.htaccess做到这一点?。。还是有更好的解决方案?

我不知道这是不是一个愚蠢的问题,但请帮帮我。如果我现在能得到任何帮助,我将不胜感激。

注意:

很抱歉之前没有提到,但我实际上想使用谷歌文档来查看这些文档,以便将它们嵌入我的网站。

听起来您正在采取将公共文档目录放在web根目录下的方法。出于多种原因(安全性、可移植性、可维护性),这不是最好的方法。

这里有一种快速而肮脏的方法(我假设您已经在使用数据库或其他存储凭据的方式处理用户身份验证):

  1. 将文档目录放在web根目录之外的某个位置
  2. 创建一个函数(或类)来读取documents目录中的文件列表(参见scandir()(http://www.php.net/manual/en/function.scandir.php)
  3. 创建一个页面,显示读取文档目录的结果。每个文件都应该是一个指向页面的链接,以及一个指示文件的URL参数。在此页面中,在向用户显示文件列表之前,请检查用户的凭据
  4. 在文件列表页面指向的页面中,检查以确保请求的文件存在于documents目录中(不要忘记再次检查以确保用户具有必要的凭据!),然后读取该文件并将其推送给用户。参见readfile()(http://php.net/manual/en/function.readfile.php),在设置各种标题字段的示例中要特别注意

您可能需要使用数据库(MySQL?)和PHP会话来检查是否:

  1. 用户已成功登录(数据库中的凭据)
  2. 用户具有"50级"或更高级别的if($level >= 50)
  3. 当用户在页面之间切换时,使用会话和会话变量来创建持久身份验证密钥
  4. 您不需要为此使用.htaccess文件