Laravel 5 - Entfernen Sie die Parameter Aus der Anfrage Alle Objekte auf Controller-Ebene
Ich habe URLs, die wie folgt Aussehen:
http://example.com/api/user?id=45&name=mike&api_token=2348283
http://example.com/api/project?id=5&description=first&api_token=2348283
etc...
In meinem Controller habe ich-Funktionen, die wie folgt Aussehen:
public function user_get_endpoint(Request $request){
$request = $request->toArray();
return UserModel::where($request)->get()->toArray();
}
Oben wird derzeit Pause seit der $request
- Objekt enthält eine Eigenschaft namens api_token
was es nicht gibt in der user
Tabelle. Ich bin mit der api_token
in eine middleware für die Authentifizierung überprüfen.
Kann ich manuell entfernt den api_token
Eigenschaft in jedem meiner API-Funktionen durch die Verwendung unset($request['api_token']
, aber ich würde gerne vermeiden, wenn möglich.
Ist es sowieso zu tun, diese Anwendung weit oder an einer Klasse oder controller-Ebene?
Sie können nur tun, $request = $request->außer('api_token')->toArray(); oder verwenden Sie das Gegenteil: nur.
Können Sie zeigen Sie Ihre middleware für den api-token?
Können Sie zeigen Sie Ihre middleware für den api-token?
InformationsquelleAutor Lloyd Banks | 2016-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht möchten Sie Globale middleware?
Ersten Vorkehrungen für die middleware laufen auf allen Strecken:
Dann definieren, was die middleware machen sollte:
$request->offsetUnset('api_token');
diese und offsetUnset() funktioniert nur für GET und HEAD, siehe meine Antwort, das funktioniert für alle Fälle...
InformationsquelleAutor bishop
Laravel bietet das hinzufügen und entfernen von Funktionen zum hinzufügen und entfernen von neuen Eigenschaften, um das request-Objekt beziehungsweise.
InformationsquelleAutor Shams Reza
Idealerweise sollten Sie senden Sie Ihre
api_token
im request-Header anstelle von Uri params.Wenn Sie mit Laravel ist
auth:api
Middleware für die Authentifizierung haben, dann schicken Sieapi_token
im Header, wie:Dann api_token wird nie kommen in Ihre Uri params.
InformationsquelleAutor Amit Gupta
Als @JanWillem sagte in den Kommentaren, die Sie verwenden können
except()
wird, entfernen Sie die params übergeben werden:https://laravel.com/docs/5.2/requests#retrieving-input und dann nach unten scrollen, um
Retrieving A Portion Of The Input Data
Außerdem, Sie müssen nicht zu verwenden
toArray()
mit der Antwort, als Laravel automatisch tun dies für Sie.Hoffe, das hilft!
InformationsquelleAutor Ross Wilson
Eine Lösung, die für alle HTTP-Methoden (nicht nur für GET und HEAD) :
InformationsquelleAutor fico7489