Aver4
15.10.2015, 09:44:12
Hej, jak wiadomo w Laravel jest domyślny middleware "VerifyCrsfToken". W przypadku gdy mam formularz w html to dodaje to pole i nie ma w sumie żadnego problemu. Pisze teraz jednak coś a'la REST i klient bedzie sie ze mną łaczył AJAxem po prostu. Nie ma żadnego widoku, formularza, htmla. Domyślam się, że najpierw on musi mnie poprosić o ten token j a muszę mu go wysłać i dopiero bedzie mógł mi wysyłać jakieś dane np. POSTem. Pytanie tylko jak to zrobić w aplikacji? Jest jakis wzorzec do tego tutorial czy cos?
Pyton_000
15.10.2015, 10:17:43
Chodzi Ci o to że klient wchodzi na stronę, widzi form ale wysyła go przez Ajax?
Jeśli tak to dodaj sobie to do head:
Kod
<script>
var X_CSRF_TOKEN = '{{csrf_token()}}';
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': X_CSRF_TOKEN
}
});
</script>
Aver4
15.10.2015, 12:17:14
Właśnie nie chodzi mi o tą sytuację. Chodzi mi o przypadek gdzie klient nie wchodzi na żadną stronę bo żadnej strony nie ma. Jest tylko endpoint do zasobu. Jeżeli wyłącze to middleware (co z tego co wyczytałem nie jest zalecane) to wszystko działa.
Ahh jak to jest że w momencie pisania na forum znajdę rozwiazanie. Generalnie zapomniałęm o funkcji crsf_token(). Po prostu najpierw wysyłam klientowi token a potem on mi wysyła POSTa z ta wartością pod polem "_token". Generalnie wszystko działa. Dzięki.
Pyton_000
15.10.2015, 12:21:00
Czyli masz przypadek REST API, więc w tym przypadku wyłączasz crst dla url:
\App\Http\Middleware\VerifyCsrfToken
dodajesz:
protected $except = [
'api/v1/*',
];
Dzięki temu podany pattern jest wykluczony z protekcji
Aver4
15.10.2015, 13:43:49
O nie wiedzialem że tak można zrobić..
Ale sposób który ja podałem jest odpowiedni żeby go użyć?
Pyton_000
15.10.2015, 13:51:17
Możesz jak najbardziej tak zrobić jeśli Ci to działa.
Aver4
15.10.2015, 14:05:49
Btw. takie pytanie ciekawostka, dlaczego przy REST zawsze podaje się url typu: api/v1 ? Chodzi mi głownie o v1 co to oznacza? Bo nigdzie nie moge tego znaleźć? ;p
pyro
15.10.2015, 14:09:51
v = version
Pyton_000
15.10.2015, 14:10:09
O taka konwencja. API się powinno numerować. Ale nie musisz jeśli to jest tylko dla Ciebie.
Jesli robi się bardziej złożone twory udostępniane na zew. to dobrze jest nadać wersję.
Jesli zmieni się na tyle że traci wiele funkcji ze starego API to oznaczasz je jak v2, dzięki temu użytkownicy nie płaczą że nie działa
Aver4
15.10.2015, 14:20:21
ok, dzieki za odpowiedź
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.