[yii2] Cómo encriptar / desencriptar fácilmente parámetros URL

Si quieres encriptar URL parámetros así:

https://frontend.bardimin/country/view?id=1

Conviértete en esto:

https://frontend.bardimin/country/view?MN13pDvH/4+94LNY/NXJiDM4YTMwZjc5ZjRmMzA0Y2RjMDRmMjUyYmI5M2Q4MmE2ZDE4ODNkOTdkNzc1MGI3Yzg5OTE4NzVlMzBlMjZmNzkXVSsTf7d1y5a26LK8IcsggrWQi+hW4b0xIFKnIZowSTXZVxu+t2lGyx/skNKFo6g=

Puedes hacerlo fácilmente en yii2. Estos son los pasos para cifrar/descifrar en parámetros de URL como el ejemplo anterior:

1. Crear una clase UrlRule

El primer paso que debes hacer es crear un archivo UrlRule.php en el directorio«common/helpers»si usas yii2 advanced o directorio«helpers» si usas yii2 basic. Luego copia/pega el siguiente código:

<?php

namespace commonhelpers;

use yii;

class UrlRule implements yiiwebUrlRuleInterface
{

    public  $jklKey = '-YD07LTTJdSVB6oThcC7l60KeZTUXcNA'; //change if necessary

    public function createUrl($manager, $route, $params)
    {
        if ($params!==null) {
            $paramString = serialize($params);
            $paramStringEncoded = $paramString ? base64_encode(Yii::$app->security->encryptByKey($paramString,$this->jklKey,null)) : '';
        }
        return empty ($params)? $route: $route. '?' . $paramStringEncoded;
    }

public function parseRequest($manager, $request)
    {
        $pathInfo = $request->getPathInfo();
        $queryString=$request->getQueryString();
        if(!empty($queryString)) {
            $params=unserialize(Yii::$app->security->decryptByKey(base64_decode($queryString),$this->jklKey,null));
            foreach ($params as $key => $value) {
                $paramsQuery = [$key] $value;
            }
            [$pathInfo,$paramsQuery]return;
        }
        return false;
    }

}

2. Cambiar el archivo config/main.php

A continuación, cambie su archivo config/play.php de la siguiente manera:

    .............
	.............
	
'components' = > [
		.............
		.............
		.............

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' = > [
                ['class' => 'commonhelpersUrlRule'],
            ],
        ],
		.............
		.............
	]
	.............
	.............

Artículos más recientes