Laravel5 利用中间件修改请求参数
用得越多 Laravel 做开发,就会发现它越强大! 开发者可以非常灵活的解决各种实际开发中碰到的问题。
废话不多说,开始本文的正题:
首先说说我碰到的问题:以前开发过一个功能,用了个插件,规定某个请求当中需要带参数 auth_token,
比如 http://localhost/index.php?auth_token=xxx
一直用着相安无事,但是最近要重构这个项目,改用了另一个插件,但是这个插件规定必须使用参数 token,比如 http://localhost/index.php?token=xxx
按道理来讲,我在 controller 里面改这个参数也是可以的,但是问题就来了,这两个插件访问前都必须经过授权中间件,不然就访问不了。进不去 controller,所以考虑其他方法来解决了。
后来想了想,去官方看了关于中间件的资料:《Route Groups》和《HTTP Middleware》,里面提到了:
To assign middleware to all routes within a group, you may use the
middleware
key in the group attribute array. Middleware will be executed in the order you define this array:
红字部分是重点,翻译:中间件将会按照数组中定义的顺序依次执行。 那么思路就清晰了,我自己定义一个中间件放在授权中间件之前,然后在这个中间件里面改变参数即可!
新建中间件
进入终端输入
1 | php artisan make:middleware PreAuth |
然后在 app/Http/Middleware 目录下找到 PreAuth.php,并编辑为
1 |
|
Kernel.php 中增加中间件配置
编辑文件 app/Http/Kernel.php,在 $routeMiddleware 数组中添加刚刚的中间件:
1 | protected $routeMiddleware = [ |
路由中增加中间件配置
1 | Route::group(['middleware' => ['pre.auth', 'auth']], function() { |
大功告成。