Laravel签名网址中间件

问题描述 投票:0回答:1

所以我用URL生成正与laravel,我想知道是否可以使用多个路由具有相同的URL签名。我有我的路线分为如下签名的middlware组:

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::signedRoute('clientquote', ['client' => $event->client, 'quote' => $event->quote]),

电子邮件是通过mailgun发送,当我点击电子邮件中的链接就可以带我到最后获取路线我middlware。一旦这条路线的部件安装在我制作一个辅助Axios公司调用来获取负载路径:

        axios
        .get(
            "/load/client/" + clientNumber + "/quote/" + quoteNumber + window.location.search
        )

离开关闭其他代码,但我得到一个403错误,只是在这里控制台验证是路线:

/load/client/2/quote/1?signature=5d2e3273e51429ba688f85969911bd3a279d36348f2e74bd10f871a56218e722

就是我所要求的甚至有可能还是需要生成每个后续路线的新标识的URL?

laravel url middleware signed
1个回答
1
投票

如果你有下signed中间件的路线,这意味着所有这些路由should具有有效签名。否则,它会给你403错误。

当你调用URL::signedRoute(..),该签名特别代表特定路由的URL。所以,如果你尝试相同的签名完全连接到不同的路线,它不会工作。

你可以做的是,当你发送数据到clientquote路线刀片查看,发送所产生的已签署的网址,以及对/load/client/路线,然后用在axois。

© www.soinside.com 2019 - 2024. All rights reserved.