定制 icanhazstring/expressive-hashids-middleware 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

icanhazstring/expressive-hashids-middleware

Composer 安装命令:

composer require icanhazstring/expressive-hashids-middleware

包简介

PSR-15/PSR-7 compliant middleware using ivanakimov/hashids.php

README 文档

README

PSR-15/PSR-7 compliant middleware using ivanakimov/hashids.php

Build Status Code Climate Test Coverage

Install

You can install the expressive-hashids-middleware library with composer:

$ composer require icanhazstring/expressive-hashids-middleware

Workflow

The main purpose of the middleware is to obfuscate internal IDs from the outside world. That said, you don't have to change your internal id handling (like autoincrement in your db) to use this middleware.

Any incoming request in the form of /api/resource/{id} will be decoded using this middleware. So for example (default configuration):

/api/user/ABC (where ABC is the encoded value) will produce request attributes like this:

$attributes = $request->getAttributes();

/*
[
    'id' => 'ABC',
    '__hashids_identifier' => 1
]
*/

The middleware won't override attributes! You can use the HashidsMiddleware::ATTRIBUTE constant to easy access this attribute.

Usage

Using expressive

Include the HashidsConfigProvider inside your config/config.php:

$aggregator = new ConfigAggregator([
    ...
    \icanhazstring\Hashids\HashidsConfigProvider::class,
    ...
]);

Make sure the HashidsConfigProvider is included before your autoload files!

Custom configuration

If you want to change parameters of Hashids, simply provide the HashidsConfigProvider::CONFIG_KEY inside your autoload configuration and change the values to your desire.

return [
    \icanhazstring\Hashids\HashidsConfigProvider::CONFIG_KEY => [
        'salt'                 => '',
        'minHashLength'        => 0,
        'alphabet'             => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
        'resource_identifiert' => 'id'
    ]
];

Using the strategy

If you want, you can use the hydration/extraction strategy provided to decode/encode data from and into your objects.

To use the strategy, simply use the provided delegator HashidsHydratorDelegatorFactory and append it as delegator for your hydrator.

class ConfigProvider
{
    public function __invoke(): array
    {
        return [
            'hydrators' => [
                'delegators' => [
                    ArraySerializable::class => [
                        \icanhazstring\Hashids\Hydrator\HashidsHydratorDelegatorFactory:class
                    ]
                ]
            ],
        ];
    }
}

统计信息

  • 总下载量: 10
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-05-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固