本文概述
- 1.创建一个安全过滤器
- 2.注册SSL过滤器
从http到https的这种重定向也可以在你的应用程序中完成。由于Symfony 1.4的工作方式, 可以在全球范围内完成此操作, 并且你可以在几秒钟内将项目的任何URL重定向到其安全版本。在本文中, 我们将向你展示如何在项目中全局强制HTTPS。
1.创建一个安全过滤器在应用程序的lib目录中创建sfSecureFilter.class.php文件, 例如apps / frontend / lib / sfSecureFilter.class.php, 或者在lib目录中的所有应用程序上全局使用它。该文件将包含sfSecureFilter类作为文件名, 该类扩展了Symfony的sfFilter类:
<
?php// apps/frontend/lib/sfSecureFilter.class.php// or for all apps// lib/sfSecureFilter.class.phpclass sfSecureFilter extends sfFilter{/*** Implements a global redirect from the 'http' to the 'https' version.* * @param type $filterChain* @return type*/public function execute($filterChain){$context = $this->
getContext();
$request = $context->
getRequest();
if (!$request->
isSecure()){$secure_url = str_replace('http', 'https', $request->
getUri());
return $context->
getController()->
redirect($secure_url);
}else{$filterChain->
execute();
}}}
execute方法将检索上下文和请求, 并将验证请求是否已得到保护。根据其协议, 如果请求尚未得到保护, 它将自动更改为HTTPS。如果该类未附加到Symfony的筛选器事件, 则该类本身不执行任何操作, 因此, 在创建此文件后继续进行最后一步。
2.注册SSL过滤器现在, 我们有了一个过滤器类, 可以在不安全的情况下更改协议, 我们需要将其注册到你应用的filters.yml文件中, 特别是在渲染过滤器中, 只需添加带有我们名称的class属性即可。先前创建的类(sfSecureFilter):
# apps/<
YourApp>
/config/filters.yml# You can find more information about this file on the symfony website:# https://symfony.com/legacy/doc/reference/1_4/en/12-Filters# Run the sfSecureFilter before starting the rendering processrendering:class:sfSecureFilter# Don't enable 'sfSecureFilter' in the security filter as this is only# executed when a module is secured by some rule on 'security.yml'security: ~cache:~execution: ~
【如何在Symfony 1.4中通过HTTPS(HTTP over SSL)强制全局访问】将更改保存到filters.yml后, 使用php symfony cc清除项目的缓存并访问项目的任何路由。现在, 你将始终自动重定向到它的HTTPS版本。
编码愉快!
推荐阅读
- 如何在PHP中按键对关联数组进行分组
- Android JobScheduler需要先检查是否正常工作,然后再运行其他任务
- 无法解析Android中的方法'execute()'
- 通过在Android中实现Proguard,使用JDBC在Asynctask中崩溃
- Android Studio - 对象构造函数中的NetworkOnMainThreadException
- 无法将值传递给Android中的AsyncTask
- AsyncTask Android方法的技术差异
- Android AsyncTask问题(连接到Web服务)
- Android(Kotlin) - 如何等待异步任务完成()