Korzystam z api bramki płatności paytabs. W tym interfejsie adres URL przekierowania musi zostać podany, aby po zakończeniu transakcji strona automatycznie przekierowywała do podanego adresu URL przekierowania. Url był adresem URL GET, ale ponieważ odpowiedź api pochodzi z typu POST, nie mogłem użyć adresu url. Aby rozwiązać ten problem, utworzyłem tę trasę jako adres URL POST, ale dzięki temu, że zostałem wysłany, nie otrzymuję żadnego tokena CSRF. W końcu dostaję ten problem.
TokenMismatchException in VerifyCsrfToken.php line 68:
Czy jest jakiś sposób, w jaki mógłbym wyłączyć funkcję tokenu CSRF tylko dla pojedynczego adresu URL POST?
- PROPOZYCJA POMOCY - Zrobiłem to zgodnie z twoją sugestią
class VerifyCsrfToken extends Middleware
{
protected $except = [
"signup/complete",
];
}
i teraz dostaję
Class "Middleware" not found
Odpowiedzi:
3 dla odpowiedzi № 1Od doktorzy:
Zazwyczaj takie trasy należy umieszczać poza grupą oprogramowania pośredniego, które RouteServiceProvider ma zastosowanie do wszystkich tras w
routes/web.php
plik. Możesz jednak wykluczyć trasy, dodając swoje identyfikatory URI do właściwości $ except w plikuVerifyCsrfToken
middleware:
class VerifyCsrfToken extends Middleware
{
protected $except = [
"stripe/*",
"http://example.com/foo/bar",
"http://example.com/foo/*",
];
}
0 dla odpowiedzi nr 2
Możesz zrobić wyjątek w oprogramowaniu pośredniczącym csrf. przejdź do app / http / Middleware / VirefyCsrfToken.php
class VerifyCsrfToken extends BaseVerifier{
protected $except = [
"route url1",
"route url2",
]
}