{"id":16464530,"url":"https://github.com/deatil/laravel-admin-lapi","last_synced_at":"2025-10-27T11:31:04.532Z","repository":{"id":57010771,"uuid":"293030267","full_name":"deatil/laravel-admin-lapi","owner":"deatil","description":"Api授权管理，签名算法实现了md5和Sha256摘要算法","archived":false,"fork":false,"pushed_at":"2022-06-22T08:21:28.000Z","size":387,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-01T05:31:33.329Z","etag":null,"topics":["admin","api","lapi","laravel","laravel-admin","laravel-admin-lapi"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deatil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-05T07:56:18.000Z","updated_at":"2024-07-24T12:52:06.000Z","dependencies_parsed_at":"2022-08-21T13:40:45.164Z","dependency_job_id":null,"html_url":"https://github.com/deatil/laravel-admin-lapi","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deatil%2Flaravel-admin-lapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deatil%2Flaravel-admin-lapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deatil%2Flaravel-admin-lapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deatil%2Flaravel-admin-lapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deatil","download_url":"https://codeload.github.com/deatil/laravel-admin-lapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238488568,"owners_count":19480788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","api","lapi","laravel","laravel-admin","laravel-admin-lapi"],"created_at":"2024-10-11T11:28:32.787Z","updated_at":"2025-10-27T11:31:04.133Z","avatar_url":"https://github.com/deatil.png","language":"PHP","readme":"## Api授权管理\n\n\n### 项目介绍\n\n*  基于 `laravel-admin` 后台管理框架的api管理系统模块扩展\n*  签名算法包括md5和Sha256摘要算法。\n*  扩展实现了api的签名验证，请求日志记录，每个appid单独授权api接口等等。\n\n\n### 签名算法\n\n*  第一步，设所有发送或者接收到的数据为集合M，将集合M内非空参数值的参数按照参数名ASCII码从小到大排序（字典序），使用URL键值对的格式（即key1=value1\u0026key2=value2…）拼接成字符串stringA。 \n*  第二步，在stringA最后拼接上key（即key=keyValue）得到stringSignTemp字符串，并对stringSignTemp进行MD5运算，再将得到的字符串所有字符转换为大写，得到sign值signValue。\n*  特别注意以下重要规则： \n~~~\n◆ 参数名ASCII码从小到大排序（字典序）；\n◆ 如果参数的值为空不参与签名；\n◆ 参数名区分大小写；\n◆ 验证调用返回或服务器主动通知签名时，传送的sign参数不参与签名，将生成的签名与该sign值作校验；\n◆ 接口可能增加字段，验证签名时必须支持增加的扩展字段 \n~~~\n*  签名数据注意：默认签名数据包括 `post` 及 `get` 数据集合，即签名数据为 `request()-\u003eall()`。\n\n\n### 使用方法 \n\n*  安装\n~~~\ncomposer require lake/laravel-admin-lapi\n\nphp artisan admin:import lapi\n~~~\n\n*  导入路由信息，解析api控制器注释\n~~~\nphp artisan lapi:import-route\n~~~\n\n\n### 请求示例 \n\n*  GET 请求\n~~~\nGET: https://yourdomain.com/api/aaa?app_id=API2020091315292812159\u0026name=aaa\u0026nonce_str=SNejQr2b9RdF1CH1\u0026sign=B28ED49A3EF7CEB615AE735608039562\u0026timestamp=1600095342\n~~~\n\n*  POST 请求\n~~~\nPOST: https://yourdomain.com/api/aaa \nbody: { \n    \"app_id\": \"API2020091315292812159\", \n    \"timestamp\": 1600095789, \n    \"nonce_str\": \"035tdGRU3i4yeb38\", \n    \"name\": \"aaa\", \n    \"sign\": \"36316F06DE635AD51C182C8D5E7495F0\" \n}\n~~~\n\n\n### `JSON` 输出格式自定义 \n\n*  如果输出的json格式和需要的格式不一致，可以覆盖绑定默认json响应\n*  可以在 `\\App\\Providers\\AppServiceProvider` 内或者其他服务提供者处添加以下代码\n~~~\n$this-\u003eapp-\u003ebind(\\Lake\\Admin\\Lapi\\Contracts\\Response::class, YourResponse::class);\n~~~\n*  使用json响应\n~~~\napp('lapi.json')-\u003ejson(boolen $success, int $code, string|null $msg, array|null $data);\n~~~\n\n\n### 模块内 `api` 文件方法注释\n\n*  方法注释\n~~~\n\u003c?php\n\nclass Index\n{\n    /**\n     * 接口方法\n     *\n     * @title 接口方法标题[必需]\n     * @request {\"a\":\"c\"}\n     * @response {\"d\":\"e\"}\n     * @description 接口方法描述\n     * @order 100\n     */\n    public function index()\n    {\n        return json([\n            'code' =\u003e 0,\n            'msg' =\u003e 'hello lapi!',\n            'data' =\u003e 'lapi data',\n        ]);\n    }\n}\n\n~~~\n\n\n### 模块内使用 \n\n*  `trait` 引用\n~~~\nuse Lake\\Admin\\Lapi\\Traits\\Lapi as LapiTrait;\n\nclass Index\n{\n    use LapiTrait;\n\n    // 初始化\n    protected function __contruct()\n    {\n        // $this-\u003ewithData($data); // 自定义签名数据，非必须\n        \n        $this-\u003echeckApi();\n    }\n}\n~~~\n\n*  `控制器中间件` 使用\n\n在使用中间件的位置引入\n~~~\n\\Lake\\Admin\\Lapi\\Middleware\\Lapi::class\n~~~\n或者\n~~~\napi.lapi\n~~~\n注意：如需自定义签名数据，可以在使用中间件之前添加 `app('lapi.check')-\u003ewithData($data);`\n\n### 开源协议\n\n*  `laravel-admin-lapi` 遵循 `Apache2` 开源协议发布，在保留本扩展版权的情况下提供个人及商业免费使用。 \n\n\n### 版权\n\n*  该系统所属版权归 deatil(https://github.com/deatil) 所有。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeatil%2Flaravel-admin-lapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeatil%2Flaravel-admin-lapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeatil%2Flaravel-admin-lapi/lists"}