Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Laravel]REST Service w Laravel 5.1 + pztanie o token
Forum PHP.pl > Forum > PHP > Frameworki
Aver4
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
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
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
Czyli masz przypadek REST API, więc w tym przypadku wyłączasz crst dla url:

\App\Http\Middleware\VerifyCsrfToken

dodajesz:
  1. protected $except = [
  2. 'api/v1/*',
  3. ];


Dzięki temu podany pattern jest wykluczony z protekcji
Aver4
O nie wiedzialem że tak można zrobić..

Ale sposób który ja podałem jest odpowiedni żeby go użyć?
Pyton_000
Możesz jak najbardziej tak zrobić jeśli Ci to działa.
Aver4
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
v = version
Pyton_000
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.