使用SSL的codeigniter文件夹结构

dje*_*tee 5 ssl https codeigniter

嘿伙计们,开发一个CI应用程序,提供公共广告以及私人(安全)访问.我之前没有实现SSL,但我知道部分设置是指定应使用https访问哪些文件夹.

关于如何构建我的文件夹以便于实现,我想提供一些建议.

安装程序是否仅影响控制器文件夹?换句话说,我应该在标准CI控制器文件夹下的公共和安全子文件夹之间拆分我的app控制器吗?

我是否需要对我的观点和模型文件夹执行任何操作?还有什么我应该注意的吗?

非常感谢您的帮助.

谢谢

Geo*_*rge 3

好的,按照您想要的方式拆分事物的最佳方法是:

  1. 在文件夹下设置您的 CodeIgniter 应用程序,并/var/www确保一切都按您想要的方式工作。
  2. 将 CodeIgniter 的 config.php 下的站点的基本 url 设置为“/”。
  3. 为站点的安全部分创建 Apache 虚拟主机,侦听端口 443 或其他端口上的请求。安装您的证书等。http://www.namecheap.com对于证书很有用。将 Web 根目录设置为 CodeIgniter 文件夹,例如 /var/www。
  4. 创建另一个 Apache 虚拟主机,指向相同的目录,例如 /var/www 来表示网站的不安全版本。

现在,一切顺利,在此阶段您将能够使用 https 或标准 http 访问整个站点。我认为您提到能够更进一步,只允许通过 HTTPS 和某些不安全的方式访问某些控制器。我为此要做的事情如下。

  1. 在 application/libraries 文件夹下创建一个 CodeIgniter 库,将其命名为 Ssl.php。输入以下代码:

class Ssl {

    public function require()
    {
        // Is the current request method secure, via SSL?
        if ( ! isset($_SERVER['https']) )
        {
            // No. Do something here, display an error, redirect... up to you
            show_error("This resource must be accessed through an SSL encrypted connection.");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,在您的应用程序控制器中,只需以通常的方式加载库,对于您希望需要SSL 连接的$this->load->library('ssl')任何控制器方法,只需在任何执行开始之前调用该方法即可。$this->ssl->require()

您甚至可以更进一步,将该方法调用放到require()类控制器__construct()函数中,甚至是您可能希望扩展的整个新控制器中。

我希望这能在某种程度上有所帮助。

  • 嗨乔治,感谢您的详细回复。昨天我正在深入研究这个问题,有人在 CI 论坛上建议了这个链接(http://codeigniter.com/forums/viewthread/83154/)。与您建议的类似。非常感谢您抽出时间来回答我的问题。干杯! (2认同)