嘿伙计们,开发一个CI应用程序,提供公共广告以及私人(安全)访问。我之前没有实现SSL,但我知道部分设置是指定应使用https访问哪些文件夹。
我想就如何构建我的文件夹以促进这一点提出一些建议。
设置是否仅影响控制器文件夹?换句话说,我应该在标准CI控制器文件夹下的公共和安全子文件夹之间拆分我的app控制器吗?
我是否需要对我的观点和模型文件夹执行任何操作?还有什么我应该注意的吗?
我们将不胜感激。
感谢
答案 0 :(得分:3)
确定以你想要的方式分解的最好方法是:
/var/www
并确保一切正常。现在,您现在一切顺利,在此阶段可以使用https或标准http访问整个网站。我想你提到能够通过只允许通过HTTPS和某些不安全访问某些控制器来更进一步。我将为此做的是以下内容。
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.");
}
}
}
现在,在您的应用程序控制器中,只需按常规方式加载库$this->load->library('ssl')
,对于您希望需要 SSL连接的任何控制器方法,只需调用{{1任何执行开始之前的方法。
您甚至可以更进一步,将该方法调用放入类控制器$this->ssl->require()
函数中的require()
,或者甚至是您希望扩展的整个新控制器。
我希望这会有所帮助。
答案 1 :(得分:0)
嘿,我正在开发一个使用HTTPS / SSL成功运行的CI应用程序。
我觉得你有点困惑。据我所知,您只能通过创建新站点或“虚拟主机”来设置启用SSL的站点(如果您使用的是Apache)。
所以基本上如果您使用的是Apache,您可以创建一个虚拟主机来处理端口443上的请求,例如https://example.com,然后将Web根设置为/ var / www或CI应用程序所在的位置。一旦您购买了证书并在生成证书请求后下载了位和bobs,您还必须配置Apache以使用您的证书文件。它听起来比听起来容易。
为什么你不能只让整个应用程序通过SSL运行?而不是加密和非加密部分? SSL的CPU开销很小,但它很小。
我希望这有助于这种或那种方式。
编辑回应评论:
欢迎你。这是一个最小的开销。对于麻烦,我只是简单地把它全部放在SSL虚拟机下。另外,如果您要在SSL /非SSL之间拆分内容,您可能会注意到如果您在SSL页面上包含非基于SSL的内容,用户将在浏览器中收到关于“不安全内容”等的令人讨厌的消息,这可能是把它们关掉并制造一些不必要的怀疑。
根据需要进行拆分可能非常困难 - 因为您需要为每个虚拟主机分配根index.php CI文件,以允许CI正确路由它。你不能只设置一个vhost服务于一个目录,例如application / controllers / private /,因为CodeIgniter不知道如何处理请求而不对它的核心路由进行一些严格的修改。
老实说,我只是将所有内容都放在SSL虚拟主机下。或者,另一种选择是设置从同一系统/核心CI文件夹运行的两个CI应用程序......如果这有意义,但是共享内容(如库和模型)将变得乏味。