【问题标题】:codeigniter: protect controller with htaccesscodeigniter:使用 htaccess 保护控制器
【发布时间】:2014-04-23 22:25:11
【问题描述】:

我想保护 1 个控制器免受我的 Codeigniter 项目的影响,并将以下 htaccess 代码放在根目录中:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

<Files admin>
AuthName "admin"
AuthType Basic
AuthUserFile /home/domain/domains/domain.nl/.htpasswd/public_html/.htpasswd
require valid-user
</Files>

当我转到 domain.nl/admin 时,我确实收到了询问凭据的提示。但是当我单击取消时,它仍然会进入管理页面。我该如何解决这个问题?

【问题讨论】:

    标签: php .htaccess codeigniter .htpasswd


    【解决方案1】:

    另一种简单的方法。把它放在你的管理控制器的顶部。

      public function __construct() {
        parent::__construct();
        if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != 'username' || $_SERVER['PHP_AUTH_PW'] != 'password') {
          header('WWW-Authenticate: Basic realm="MyProject"');
          header('HTTP/1.0 401 Unauthorized');
          die('Access Denied');
        }
      }
    

    【讨论】:

    • 是否还有一种简单的注销方法,通过重置 AUTH 或其他方式?还是只有会话才有可能?
    • 投反对票,因为这不是一种可扩展的方法。具有位置匹配的 .htaccess 和 .htpasswd 组合将是最合适的 imo
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多