通过PHP检查的Basic Auth限制文件夹访问

时间:2017-12-10 20:41:50

标签: php nginx basic-authentication http-basic-authentication

使用Nginx和PHP,我想保护用户名/密码检查后面的文件夹内容。

在前端,我想使用HTTP Basic Auth,而不是必须实现任何形式。

在后端,此检查应使用业务逻辑,而不是静态htpasswd文件(例如通过数据库或API)。

换句话说,流程将是:

  1. 用户点击受保护文件的网址
  2. 显示HTTP Basic Auth对话框
  3. 运行PHP脚本以验证凭据
  4. 如果有效,则文件开始下载。否则,返回403。
  5. 实现这一目标的最简单方法是什么?

    (很明显,我主要想要有关配置Nginx的建议。除了获取凭据和返回文件之外的PHP逻辑不是我的问题。)

    编辑:我根本不需要或想要创建会话。我不介意用户每次为每个文件输入凭据。

2 个答案:

答案 0 :(得分:0)

如果您使用Nginx进行操作,那么只需要将几个directives添加到您想要限制访问和设置密码的位置,Nginx会完成剩下的工作。 Nginx实现使用静态文件作为密码。

对于更像您所描述的解决方案的解决方案,请查看PHP documentation

中的示例

答案 1 :(得分:0)

对于Apache,目录或位置指令可用于限制访问:https://wiki.apache.org/httpd/PasswordBasicAuth

<Directory "/var/www/html/protected">
  AuthType Basic
  AuthName "Authentication Required"
  AuthUserFile "/etc/htpasswd/.htpasswd"
  Require valid-user

  Order allow,deny
  Allow from all
</Directory>