Apache mod_auth_form 如何锁定文件夹

2024-03-05

在我看来,我对“mod_auth_form”应该如何工作有一个根本性的误解。我参考了 Apache 文档的这一页:

http://httpd.apache.org/docs/current/mod/mod_auth_form.html

我有一个公用文件夹和一个私人文件夹

我想要实现的是锁定一个文件夹。用户需要使用用户名和密码登录才能查看受保护文件夹的index.php 页面。

这是我的虚拟主机设置:

<VirtualHost  *:80>
    ServerName customform.uwe
    DocumentRoot "/home/uwe/www/protected_custom_form"
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/protected_custom_form.error.log
    CustomLog /var/log/apache2/protected_custom_form.access.log combined

    <Directory "/home/uwe/www/protected_custom_form">
        AllowOverride All
        Allow from All
    </Directory>

    <Directory "/home/uwe/www/protected_custom_form/secret/">

    </Directory>

    <Location /dologin>
        SetHandler form-login-handler
        AuthFormLoginRequiredLocation http://customform.uwe/login.html
        AuthFormProvider file
        AuthUserFile /home/uwe/www/conf/passwd
        AuthType form
        AuthName realm
        Session On
        SessionCookieName session path=/
        SessionCryptoPassphrase secret
    </Location>
</VirtualHost>

这是我的登录表单,它托管在我的虚拟服务器的公共文件夹中:

<form method="POST" action="/dologin">
    Username: <input type="text" name="httpd_username" value="" />
    Password: <input type="password" name="httpd_password" value="" />
    <input type="submit" name="login" value="Login" />
    <input type="hidden" name="httpd_location" value="http://customform.uwe/secret/index.php" />
</form>

好的,这就是发生的事情

  1. 转到“customform.uwe”效果很好 -> 我看到该文件夹​​的索引页正在显示
  2. 转到“customform.uwe/login.html”-> 我看到我的登录表单出现,我可以登录并重定向到我的秘密“文件夹”的“索引”页面
  3. 转到“custom form.uwe/secret/index.php”显示我的索引页面是否已登录。

这是我的问题:

  1. 如何保护我的秘密文件夹,以便将未登录的用户重定向到登录表单。
  2. 这是完全正确的方法吗?

我现在真的很头疼,所以非常感谢你的帮助。


好的,我相信我现在已经解决了。我一定有点困惑:-)

我遵循的想法包括两件事:

  1. 提供登录功能
  2. 如果用户转到需要验证的页面(而他/她不需要验证),则将用户重定向到登录页面

为了实现这一点,我需要编辑两个文件:

  1. 我的虚拟主机
  2. 我的登录文件

这是虚拟主机:

<VirtualHost  *:80>
    ServerName customform.uwe
    DocumentRoot "/home/uwe/www/protected_custom_form"
    DirectoryIndex index.php
    ErrorLog /var/log/apache2/protected_custom_form.error.log
    CustomLog /var/log/apache2/protected_custom_form.access.log combined

    #This is the public
    <Directory "/home/uwe/www/protected_custom_form">
        AllowOverride All
        Allow from All
    </Directory>

    #This is the login handler, the login form needs to pint to this handler in its action! 
    <Location /dologin>
       SetHandler form-login-handler
       AuthFormLoginRequiredLocation http://customform.uwe/login.html
       AuthFormLoginSuccessLocation http://customform.uwe/secret/secretindex.php
       AuthFormProvider file
       AuthUserFile /home/uwe/www/conf/passwd
       AuthType form
       AuthName realm
       Session On
       SessionCookieName session path=/
       SessionCryptoPassphrase secret
    </Location>

    # This is the location setting I missed earlier: When a 
    # user comes to this location unauthorised, he will be redirect to the login form
    # This happens as the ErrorDoucment gets overwritten with login page

    <Location /secret/index.php>
        Require valid-user
        AuthFormProvider file
        ErrorDocument 401 /login.html
        AuthUserFile /home/uwe/www/conf/passwd
        AuthType form
        AuthName realm
        AuthFormLoginRequiredLocation http://customform.uwe/login.html
        Session On
        SessionCookieName session path=/
        SessionCryptoPassphrase secret

    </Location>
</VirtualHost>

这是登录表单 html 这里的变化是表单的操作处理程序现在指向我的位置 我上面定义的

<form method="POST" action="/dologin">
    Username: <input type="text" name="httpd_username" value="" />
    Password: <input type="password" name="httpd_password" value="" />
    <input type="submit" name="login" value="Login" />
    <input type="hidden" name="httpd_location" value="/secret/secretindex.php" />
</form>

这似乎有效,它(或多或少)都在 Apache 文档中,但我很困惑,因为它们不是完整的示例


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache mod_auth_form 如何锁定文件夹 的相关文章

  • 尝试在 Apache 上运行乘客时出现问题

    我在运行时遇到这个问题 httpd t httpd Syntax error on line 545 of private etc apache2 httpd conf Syntax error on line 1 of private e
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • App Engine 的 Google Cloud Storage 身份验证

    我们希望开始使用 Google Cloud Storage 作为用户上传文件的持久存储 不幸的是 我无法添加应用程序标识 应用程序 ID appspot gserviceaccount com 到我们的 团队 因为我们的团队基于 Googl
  • org.apache.http.conn.HttpHostConnectException:在 android 中连接到 http://localhost 被拒绝

    我正在制作一个应用程序 在执行它时将图像上传到服务器并将其数据库更新到android中的服务器 它显示错误 Connection to http localhost refused 还有更多错误 我研究了这个问题 发现不是提供 URL 连接
  • mod_rewrite代理超时

    我有 apache 设置来代理对后端应用程序服务器的请求 有多个后端服务器 并且有一个大的 rewrite rules 文件 针对每个请求进行处理 以正确地将所有请求代理到应用程序服务器 一台特定的应用程序服务器有时需要很长时间才能响应 如
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • DOMDocument::save[domdocument.save]:无法打开流:权限被拒绝

    我有一个代码可以将 XML 文件保存到我的目录中 它实际上在我的本地主机和我的共享主机中就像一个魅力 但它在我的 Linux VPS 中不起作用 我总是收到这个错误 警告 DOMDocument save home admin xxxxxx
  • 在 Apache 上设置虚拟主机(XAMPP、Windows 10)

    我尝试使用 XAMPP 为某些本地站点设置虚拟主机 我执行了后续步骤 在 C xampp apache conf extra httpd vhosts conf 中我添加了
  • Yii2 从 MySQL 中的表登录的分步指南

    我开始在 Yii2 中迈出第一步 到目前为止 我已经能够编写一个应用程序并将数据库中的表连接到它 就像我在 Yii1 中学到的那样 该表是contacts我的创建视图中的表单将数据发送到数据库 没有任何问题 问题是我只能在 Yii2 内置的
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • 一个好的多线程 python 网络服务器?

    我正在寻找一个多线程而不是多进程的 python Web 服务器 如 apache 的 mod python 的情况 我希望它是多线程的 因为我希望有一个内存对象缓存供各种 http 线程使用 我的网络服务器做了很多昂贵的事情并计算了一些大
  • PHP 编译器 openssl 错误

    在提问之前 我必须说我已经tried堆栈和其他地方的每个类似问题都失败了 我无法使用composer因为这个错误 requires ext openssl gt the requested PHP extension openssl is
  • 我可以使用 ivy.xml 文件中的属性来避免依赖项的重复版本号吗?

    这是我的 ivy xml 的一部分现在的样子
  • System.Security.Claims 命名空间的成员不可用?

    我正在学习 NET 4 5 中新的基于声明的身份验证方法 并使用控制台应用程序来执行此操作 根据 MSDNhere http msdn microsoft com en us library system security claims c
  • 如何在 ASP.NET MVC 5 中实现简单的身份验证

    我有一个带有 SQL Server 数据库的现有项目 带有数据库优先的 EF 工作单元和服务层 我需要添加 ASP NET MVC 项目并使用现有服务来验证用户身份 我发现了不同的复杂决定 我需要在身份中使用我的服务或在没有身份的情况下实现
  • 如何使用多个Auth组件?

    我使用用户模型将身份验证组件配置为 管理页面 但现在 我还想为客户端创建 配置身份验证 我尝试 重写 inialize This is in my ClientsController php public function initiali
  • 无需代理转发的 SSH 跳转主机

    虽然是一个简单的问题 但我已经搜索了几天没有成功 M My machine J Jump Host S Server Jump Host has my public key on authorized keys Server has J s
  • Magento 外部登录不会创建会话 cookie

    我正在尝试从外部站点替换 Magento 的相当笨拙的 ajax 登录 该网站使用 Magento 作为商店 站点和 magento 商店都有自己的登录信息 因此当用户登录时 两者同步非常重要 这是通过每次页面重新加载时进行 ajax 调用
  • Django:登录用户并在同一页面上刷新而不定义模板?

    我正在尝试使用引导下拉登录表单来让用户登录 我可以对我的用户名和密码进行硬编码并进行身份验证 但我试图在不进入登录屏幕的情况下让用户登录 这是我的代码 模板 我使用操作来调用 logUserIn url 以便表单可以发布到该视图 ul cl
  • 如何重写 URL 而不刷新,例如 GitHub.com

    我在浏览 GitHub com 时注意到 在查看存储库的源代码时 您单击一个文件 源代码会滑入 并且 URL 会发生变化 但页面看起来并没有刷新 有谁知道这是如何做到的 我见过使用 符号完成此操作 尤其是在创建 Flash 站点时 但我从未

随机推荐