因此,我正在使用laravel进行URL生成,我想知道您是否可以使用具有相同URL签名的多个路由。我将路由分为以下签名的中间件组:
Route::middleware('signed')->group(function () {
Route::get('load/client/{client}/quote/{quote}', 'QuoteController@getClientQuote')->name('clientquote');
Route::post('submit/client/{client}/quote/{quote}', 'QuoteController@submitClientQuote')->name('clientquote');
Route::post('save/client/{client}/quote/{quote}', 'QuoteController@saveClientQuote')->name('clientquote');
Route::get('/client/{client}/quote/{quote}', 'QuoteController@getClientQuoteBlade')->name('clientquote');
});
我在此处的电子邮件中也生成了URL:
'url' => URL::signedRoute('clientquote', ['client' => $event->client, 'quote' => $event->quote]),
电子邮件是通过mailgun发送的,当我单击电子邮件中的链接时,它将带我到中间件中的最后一条获取路线。安装该路由的组件后,我将进行第二次axios调用以获取加载路由:
axios
.get(
"/load/client/" + clientNumber + "/quote/" + quoteNumber + window.location.search
)
删除其他代码,但出现403错误,只是要在控制台中验证以下路线:
/load/client/2/quote/1?signature=5d2e3273e51429ba688f85969911bd3a279d36348f2e74bd10f871a56218e722
是我什至要求的,还是我需要为每个后续路由生成一个新的签名URL?
答案 0 :(得分:1)
如果在signed
中间件下有一条路由,则意味着所有这些路由should
都具有有效的签名。否则会给您403错误。
当您致电URL::signedRoute(..)
时,该签名特别代表该特定的路由URL。因此,如果您尝试将同一签名完全附加到其他路由,则将无法使用。
您可以做的是,当通过clientquote
路由将数据发送到刀片视图时,也发送为/load/client/
路由生成的签名URL,然后在axois中使用它。