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 %}