Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inny][Symfony2] Laravel: Odebranie danych z metody GET - rounting
miccom
post 7.05.2019, 21:59:18
Post #1





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cześć.
Implementuję na stronie szybkie płatności Cashbill.

Przy prawidłowym wykonaniu przelewu system cashbill wysyła do mnie dane metodą GET

https://moj-adres.pl/platnosci?service=strona_startowa.pl&orderid=TEST_abrazcdo&amount=70&userdata=YToxOntzOjc6InVzZXJfaWQiO2k6Mjt9&status=ok&sign=16111498e098cd3a66e0d88eacc4ae2e

Aktualnie laravel wywala błąd że nie ma takiego routingu.

Jak przygotować routing aby odebrać powyższe dane?


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
LowiczakPL
post 7.05.2019, 22:14:48
Post #2





Grupa: Zarejestrowani
Postów: 327
Pomógł: 24
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


moim zdaniem wystarczy Route::get('/platnosci',...

Ten post edytował LowiczakPL 7.05.2019, 22:15:03


--------------------
Symfony, Laravel, Back-End, Front-End, aktualnie w wolnym czasie piszę gierkę MMORPG w Symfony, głównymi bohaterami są mrówki.
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 16:25:07
Post #3





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Dałem sobie routes:
  1. Route::get('/platnosci/{data}', ['as' => 'autoryzacja', 'uses' => 'UserController@endPayUser']);


Otrzymuję komunikat:
  1. Sorry, the page you are looking for could not be found.
  2. 1/1
  3. NotFoundHttpException in RouteCollection.php line 161:


Mam dać tylko zwykły route jak poniżej?
  1. Route::get('/platnosci', ['as' => 'autoryzacja', 'uses' => 'UserController@endPayUser']);


Ok, jestem w domu.
Dziękuję za pomoc smile.gif


A jednak nie jestem w domu...

Usera przekierowuję poprawnie, natomiast płatność cashbill potwierdza przesłaniem danych niejawnie kanałem serwer-serwer

  1. adres URL, na który system wyśle powiadomienie dotyczące zmiany statusu transakcji kanałem serwer-serwer ( POST )


Tam wstawiłem adres URL:
https://www.mojastrona.pl/endPay/

Rout:
Route::get('/endPay', ['as' => 'autoryzacja', 'uses' => 'UserController@endPay']);


Ale w odpowiedzi otrzymuję komunikat:

  1. odpowiedź serwera: R_ERROR:
  2. Whoops, looks like something went wrong.
  3. 1/1
  4. MethodNotAllowedHttpException in RouteCollection.php line 219



Jak ustawić routing serwer-serwer?

Ten post edytował miccom 8.05.2019, 16:25:44


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
nospor
post 8.05.2019, 16:30:31
Post #4





Grupa: Moderatorzy
Postów: 34 726
Pomógł: 5773
Dołączył: 27.12.2004




A czy ten serwis z platnosciami nie sle ci przypadkiem tych danych POSTem? Bo ty niestety ustawiles route dla GETa


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 16:35:10
Post #5





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Tak nosporze, ale czy odbierając dane metodą POST muszę mieć potwierdzenie formularza przez podpis CSRF?
Jeśli dam ten routing na post
  1. Route::post('/endPay', ['as' => 'autoryzacja', 'uses' => 'UserController@endPay']);



otrzymuję ten sam komunikat sad.gif


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
viking
post 8.05.2019, 16:35:11
Post #6





Grupa: Zarejestrowani
Postów: 5 346
Pomógł: 900
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nawet jest to jasno opisane w tym kawałku zacytowanym.


--------------------
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 16:38:25
Post #7





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Tak vikingu, natomiast zmiana routa nie pomaga, zapewne CSRF przeszkadza i automatycznie blokuje to połączenie serwerowe


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
nospor
post 8.05.2019, 16:56:54
Post #8





Grupa: Moderatorzy
Postów: 34 726
Pomógł: 5773
Dołączył: 27.12.2004




Nie znam laravela ale nie rozumiem czemu CSRF mialby tutaj cokolwiek do gadania. Jesli tak jest, to poszukaj w dokumetnacji jak to wylaczyc.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 17:01:29
Post #9





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Wg instrukcji mozna poszczególne routy wyizolować aby nie wymagały csrf,

app/Middleware/VerifyCsrfToken.php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
'/endPay',
];
}

Tam wrzuciłem rout który ma być poza csrf, ale nadal ten sam błąd ;/


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
Pyton_000
post 8.05.2019, 17:02:01
Post #10





Grupa: Zarejestrowani
Postów: 7 812
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


CSRF można wyłączyć dla konkretnego URL w middleware.
Go to the top of the page
+Quote Post
viking
post 8.05.2019, 17:16:04
Post #11





Grupa: Zarejestrowani
Postów: 5 346
Pomógł: 900
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zresztą csrf zwraca error bodajże 419 albo 420. Jeśli masz dalej błąd routingu to coś jeszcze jest nie tak. Może cache. Ściągnij sobie program insomnia i testuj.


--------------------
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 19:22:24
Post #12





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Mój routing to:
  1. Route::group(['middleware' => ['web']], function () {
  2. Route::get('/', ['as' => '/', 'uses' => 'FirstController@indexStronaGlowna']);
  3. Route::get('/sale', ['as' => '/', 'uses' => 'FirstController@loadAllRoomSite']);
  4. Route::get('/cennik', ['as' => '/', 'uses' => 'FirstController@loadPriceListSite']);
  5. Route::get('/kontakt', ['as' => '/', 'uses' => 'FirstController@loadContactSite']);
  6. Route::get('/rejestracja', ['as' => '/', 'uses' => 'FirstController@loadRegisterSite']);
  7. Route::post('/endPay', ['as' => 'autoryzacja2', 'uses' => 'UserController@endPay']);
  8. });




userController.php
  1. public function endPay()
  2. {
  3. echo 'dziala';
  4. }



Jeśli wyświetlę sobie adres w insomnia to otwiera mi się strona główna z informacją, że muszę być zalogowany, aby widzieć tą stronę, co mam zmienić?

Jedno pytanie...Dlaczego zamiast pokazać białą stronę z tekstem "działa" odsyła do strony głównej?


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
viking
post 8.05.2019, 19:25:06
Post #13





Grupa: Zarejestrowani
Postów: 5 346
Pomógł: 900
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jaka wersja lv? Zależy co zrobiłeś w middlewareach i autoryzacji w aplikacji. Możesz wyłączyć sprawdzanie per route.


--------------------
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 19:33:40
Post #14





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


laravel 5.2

W Authenticate mam tak:

public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('/')->withErrors(['email'=>'Aby zobaczyć tą stronę musisz się zalogować']);
}
}

return $next($request);
}


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
nospor
post 8.05.2019, 19:41:56
Post #15





Grupa: Moderatorzy
Postów: 34 726
Pomógł: 5773
Dołączył: 27.12.2004




Cytat
Dlaczego zamiast pokazać białą stronę z tekstem "działa" odsyła do strony głównej?

Bo robisz przekierowanie do glownej? O tu:
return redirect()->guest('/')->withErrors(['email'=>'Aby zobaczyć tą stronę musisz się zalogować']);


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 20:13:53
Post #16





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Powyższy kod z Authenticate to prawie oryginał laravel 5.2 master

Ok, więc rozkminiłem smile.gif



Na początku kontrolera UserControler mam:

public function __construct()
{
$this->middleware('auth');
}


Czyli z wszystkich funkcji sprawdzane jest, czy user jest zalogowany smile.gif
Funkcję endPay wrzuciłem do UserControler, i własnie middleware blokowało wszystko smile.gif

Przeniosłem funkcję endPay do innego kontrolera ( który nie sprawdza autoryzacji ) i działa pięknie ładnie.
Dziękuję wszystkim za udział w rozwiązaniu mojego problemu.
Pozdrawiam.

Ten post edytował miccom 8.05.2019, 20:02:15


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
LowiczakPL
post 8.05.2019, 20:30:25
Post #17





Grupa: Zarejestrowani
Postów: 327
Pomógł: 24
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Systemy płatności nie mogą mieć autoryzowanego adresy, to musi być publiczny adres be żadnej autoryzacji czyli jako gość.

Route::group(['middleware' => ['auth']], function () {
//tylko autoryzowani użytkownicy mogą uzyskać dostęp do tych tras
});

Route::group(['middleware' => ['guest']], function () {
//kazdy ma do tego dostęp i tu robisz jakisz tajny adres do przyjmowania odpowiedzi
});

Ten post edytował LowiczakPL 8.05.2019, 20:32:21


--------------------
Symfony, Laravel, Back-End, Front-End, aktualnie w wolnym czasie piszę gierkę MMORPG w Symfony, głównymi bohaterami są mrówki.
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 20:36:09
Post #18





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Ok, a jak mam jedną trasę dla gości i dla zalogowanych?
Mam ją dodać do obu grup?


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
LowiczakPL
post 8.05.2019, 20:45:24
Post #19





Grupa: Zarejestrowani
Postów: 327
Pomógł: 24
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


zalogowany może przecież chodzić wszędzie ale nie zalogowany już nie powinien, to zależy co masz pod tym adresem, czy wrażliwe dane czy publiczne

rozdziel to na grypy ważności, publiczne i prywatne po autoryzacji

no chyba że masz jeszcze grypu zalogowanych osób, to do tego są role użytkowników


--------------------
Symfony, Laravel, Back-End, Front-End, aktualnie w wolnym czasie piszę gierkę MMORPG w Symfony, głównymi bohaterami są mrówki.
Go to the top of the page
+Quote Post
miccom
post 8.05.2019, 20:49:08
Post #20





Grupa: Zarejestrowani
Postów: 370
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Ok, dziękuję za pomoc wink.gif


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.09.2019 - 20:21