laravel签名路由

在平时的开发应用中,我们可能需要对url进行认证

比如不能随意篡改url中的参数,url只有在指定的时间范围内有效

当然我们可以自己来写代码实现

在laravel中有更加优雅的实现方法,就是我们现在要讲的签名路由

首先将`'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,`加入到`app/Http/Kernel.php`中

```
protected $routeMiddleware = [
......
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
......
];
```

然后添加路由

```
Route::get('signature', 'SignatureControl@index');
Route::get('event/{id}/rsvp/{user}/{response}', 'SignatureControl@event')->name('event.rsvp');
```
接着创建控制器

```
25, 'user' => 100, 'response' => 'yes']);
echo "
";
echo URL::temporarySignedRoute('event.rsvp', now()->addMinutes(1), [
'id' => 25,
'user' => 100,
'response' => 'yes'
]);
}
public function event(Request $request,$id){
if (! $request->hasValidSignature()) {
abort(401);
}
echo "id->".$id;
echo "
";
echo "user->".$request->route('user');
}
}

```

我们访问`http://api.test.com/signature`可以生成url

接着访问`http://api.test.com/event/25/rsvp/100/yes?expires=1610692076&signature=46e200d801ce7fd62f10daeee0aa7610d68c3ca1ad89e1b19e13f53e0f436f88`

如果在指定时间范围内访问可以访问,如果自己改了url中的参数,则会提示`401
UNAUTHORIZED`

    A+
发布日期:2021年01月15日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: