aaugustyniak / params-codec-bundle
Symfony 扩展包,用于混淆/加密路由参数。
1.1.0
2017-05-06 17:30 UTC
Requires
- php: >=5.4.0
- symfony/framework-bundle: >=2.6.0
Requires (Dev)
- phpunit/phpunit: 4.8.23
This package is not auto-updated.
Last update: 2024-09-15 01:42:35 UTC
README
=================== [] (https://travis-ci.org/artur-augustyniak/ParamsCodecBundle)
提供简单的 Symfony 2/3 扩展包,用于 AES 加密路由参数。
通过 Composer 安装
{ "require": { "aaugustyniak/params-codec-bundle": "dev-master" } }
使用和设置
composer
composer aaugustyniak/params-codec-bundle
AppKernel.php
$bundles = [ ..., new Aaugustyniak\ParamsCodecBundle\ParamsCodecBundle() ];
基本用法
此扩展包注册了 param_codec
服务和 twig 扩展,提供与标准 Twig URL 创建函数相关联的两个函数。
在默认实现中,ParamCodec 接口由 AesCodec 支持。ParamCodec 使用来自 parameters.yml 的密钥密码。
DefaultController.php
use Aaugustyniak\ParamsCodecBundle\Annotations\DecryptParams; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction(Request $request) { /** * Value to be encrypted in resulting url/path */ $rawValue = "Some secret internal value"; return $this->render('default/index.html.twig', [ 'raw_value' => $rawValue, ]); } /** * @DecryptParams() * * @Route("/display/{param}", name="display") * @param $param * @return \Symfony\Component\HttpFoundation\Response */ public function displayAction($param) { /** * Using @DecryptParams() annotation $param is auto decrypted */ return $this->render('default/index.html.twig', [ 'decrypted_value' => $param ]); } }
index.html.twig
{% extends 'base.html.twig' %} {% block body %} <div id="wrapper" xmlns="http://www.w3.org/1999/html"> <div id="container"> <div> {% if decrypted_value is defined %} <div style="border: 1px dotted red;background: green;padding: 16px;"> Decrypted param: <code>{{ decrypted_value }}</code> <a href="{{ path('homepage') }}"> BACK </a> </div> {% else %} <p> {% verbatim %} {{ raw_value }} {% endverbatim %} <code>{{ raw_value }}</code> </p> <!-- Functions: encrypted_path encrypted_url are equivalent of basic twig path and url --> <div style="border: 1px dotted green;padding: 16px; margin-top: 12px;"> <a href="{{ encrypted_path('display', {'param': raw_value}) }}"> {% verbatim %} {{ encrypted_path('display', {'param': raw_value}) }} {% endverbatim %} </a> <a href="{{ encrypted_url('display', {'param': raw_value}) }}"> {% verbatim %} {{ encrypted_url('display', {'param': raw_value}) }} {% endverbatim %} </a> </div> {% endif %} </div> </div> </div> {% endblock %}