Ich habe eine API zum Interagieren mit meiner Web-App, die durch eine Klasse definiert ist. Jede öffentlich zugängliche Methode muss eine Authentifizierung durchlaufen, bevor sie ausgeführt wird. Anstatt dieselbe Zeile in jeder Methode immer wieder zu schreiben, möchte ich die magische __call-Funktion verwenden. Es funktioniert jedoch nur bei privaten oder geschützten Methoden, und meine müssen öffentlich sein, um mit Zend_Json_Server zusammenzuarbeiten.
class MY_Api
{
public function __call($name, $arguments)
{
// Hier befindet sich der Code, der die Argumente auf einen gültigen Authentifizierungstoken überprüft und einen Fehler zurückgibt, wenn falsch
}
public function myFunction($param1, $param2, $param3)
{
// Hier wird etwas gemacht, wenn der Benutzer die myFunction aufruft und die Parameter übergibt
// Diese Funktion muss öffentlich bleiben, damit Zend_Json_Server sie analysieren kann
// Aber ich möchte, dass sie von einer Zauberfunktion abgefangen wird, damit die Authentifizierung überprüft werden kann und das System abspringt, bevor es überhaupt zu dieser Funktion gelangt.
}
}
Ist es möglich, in diese öffentlichen Funktionen einzugreifen und möglicherweise deren Ausführung abzubrechen, bevor sie aufgerufen werden?
0 Stimmen
Noch nicht. Ich war mir nicht sicher, ob es angemessen ist, es für diesen Abschnitt der Anwendung zu verwenden. Es handelt sich um eine REST-API, daher loggen sie sich nicht ein und richten keine Sitzungen ein, sondern übergeben stattdessen ein Token.
1 Stimmen
Was ruft die öffentliche Methode auf und kann dieser Aufrufer die Authentifizierungsmethode aufrufen?
0 Stimmen
@webbiedave Der Aufrufer ist die Methode Zend_Json_Server->handle(), daher müsste ich die Zend_Json_Server-Klasse erweitern, was für die Möglichkeit, dies tun zu können, überdimensioniert erscheint.