ath*_*ene 13 php middleware laravel laravel-5
假设我有一条指向中间件的路线;
Route::get("/user/{id}", ['middleware' => 'auth', function ($id) {
}]);
Run Code Online (Sandbox Code Playgroud)
我的中间件代码如下:
public function handle($request, Closure $next)
{
return $next($request);
}
Run Code Online (Sandbox Code Playgroud)
如果我想$id在中间件中使用,我该怎么做?
Ami*_*pta 17
您可以使用以下方法之一访问中间件中的route参数:
第一种方法
$request->route()->parameters();
此方法将返回所有参数的数组.
第二种方法
$request->route('parameter_name');
这里parameter_name指的是您在路线中称为参数的内容.
Sau*_*ogi 14
在你的情况下,你不能$id进入中间件.
通常,您可以使用以下:符号将参数传递给中间件:
Route::get('user/{id}', ['middleware' => 'auth:owner', function ($id) {
// Your logic here...
}]);
Run Code Online (Sandbox Code Playgroud)
并将传递的参数转换为中间件方法,如下所示:
<?php
namespace App\Http\Middleware;
use Closure;
class Authentication
{
public function handle($request, Closure $next, $role)
{
if (auth()->check() && auth()->user()->hasRole($role)) {
return $next($request);
}
return redirect('login');
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,该
handle()方法通常只需要a$request和a$next closure,它有一个third parameter,这是我们的中间件参数.如果您在路由定义中将多个参数传递给中间件调用,则只需向handle()方法添加更多参数
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
13897 次 |
| 最近记录: |