Sfoglia il codice sorgente

[DOCUMENTATION] German:

- sync up to r15917

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15918 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 anni fa
parent
commit
4f6f2285d7
1 ha cambiato i file con 150 aggiunte e 1 eliminazioni
  1. 150 1
      documentation/manual/de/module_specs/Zend_Amf-Server.xml

+ 150 - 1
documentation/manual/de/module_specs/Zend_Amf-Server.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 15814 -->
+<!-- EN-Revision: 15898 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.amf.server">
     <title>Zend_Amf_Server</title>
@@ -477,6 +477,74 @@ private function getContactHandler(event:ResultEvent):void {
         </para>
     </sect2>
 
+    <sect2 id="zend.amf.server.resources">
+        <title>Ressourcen</title>
+
+        <para>
+            <classname>Zend_Amf</classname> bietet Tools für das Mappen von Ressource Typen die
+            von Service Klassen in von ActionScript verwendbaren Daten zurückgegeben werden.
+        </para>
+
+        <para>
+            Um spezielle Ressource Typen zu behandeln, muss der Benutzer eine Plugin Klasse
+            erstellen die nach dem Ressource Namen benannt ist, mit großgeschriebenen Wörtern
+            und entfernten Leerzeichen (ein Ressouce Typ "mysql result" wird zu MysqlResult),
+            mit einem Präfix, z.B. <classname>My_MysqlResult</classname>. Diese Klasse sollte eine
+            Methode implementieren, <code>parse()</code>, die ein Argument - die Ressource -
+            annimmt und den Wert zurückgibt der an das ActionScript gesendet werden sollte. Die
+            Klasse sollte in der Datei vorhanden sein nachdem die letzte Komponente des Namens
+            benannt ist, z.B. MysqlResult.php.
+        </para>
+
+        <para>
+            Das Verzeichnis das die Plugins für das Ressource Handling enthält sollte beim Typloader
+            von Zend_Amf registriert sein:
+        <programlisting role="php"><![CDATA[
+Zend_Amf_Parse_TypeLoader::addResourceDirectory("My", "application/library/resources/My"));
+]]></programlisting>
+        </para>
+
+        <para>
+            Für eine detailierte Diskussion für das Laden von Plugins, sehen Sie bitte in das
+            Kapitel <link end="zend.loader.pluginloader">Plugin Loader</link>.
+        </para>
+
+        <para>
+            Das Standardverzeichnis für Ressourcen von <classname>Zend_Amf</classname> wird
+            automatisch registriert und enthält aktuell Handler für "mysql result" und "stream"
+            Ressourcen.
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// Beispiel für die Implementierung von Ressourcen für die Behandlung von Mysql Ergebnis Typen
+class Zend_Amf_Parse_Resource_MysqlResult
+{
+    /**
+     * Parse resource into array
+     *
+     * @param resource $resource
+     * @return array
+     */
+    public function parse($resource) {
+        $result = array();
+        while($row = mysql_fetch_assoc($resource)) {
+            $result[] = $row;
+        }
+        return $result;
+    }
+}
+]]></programlisting>
+
+        <para>
+        </para>
+
+        <para>
+            Der Versuch einen unbekannten Ressource Typ zurückzugeben (z.B. einen für den kein
+            Handler Plugin existiert) führt zu einer Exception.
+        </para>
+
+    </sect2>
+
     <sect2 id="zend.amf.server.flash">
         <title>Von Flash aus auf den Server verbinden</title>
 
@@ -633,6 +701,87 @@ private function onFault(fault:Object):void {
 
     </sect2>
 
+    <sect2 id="zend.amf.server.auth">
+        <title>Authentication</title>
+
+        <para>
+            <classname>Zend_Amf_Server</classname> erlaubt es Authentifizierung und Authorisierungs-
+            Hooks zu spezifizieren um den Zugriff auf Services zu kontrollieren. Es wird die
+            Infrastruktur verwendet die von den <link end="zend.auth">Zend_Auth</link> und
+            <link end="zend.acl">Zend_Acl</link> Komponenten angeboten wird.
+        </para>
+
+        <para>
+            Um Authentifizierung zu definieren, muß der Benutzer einen Authentifizierungs-Adapter
+            anbieten der die abstrakte Klasse <classname>Zend_Amf_Auth_Abstract</classname>
+            erweitert. Der Adapter sollte die <code>authenticate</code> Methode implementieren so
+            wie jeder normale
+            <link end="zend.auth.introduction.adapters">Authentifizierungs-Adapter</link>.
+        </para>
+
+        <para>
+            Der Adapter sollte die Eigenschaften <code>_username</code> und <code>_password</code>
+            von der Vorgängerklasse <classname>Zend_Amf_Auth_Abstract</classname> verwenden um
+            authentifizieren zu können. Diese Werte werden vom Server gesetzt, indem die
+            <code>setCredentials()</code> Methode verwendet wird, bevor <code>authenticate()</code>
+            aufgerufen wird wenn die Zugangsdaten in den AMF Anfrage-Headern empfangen wurden.
+        </para>
+
+        <para>
+            Die Identität die vom Adapter zurückgegeben wird sollte ein Objekt sein das die
+            Eigenschaft <code>role</code> enthält damit die Zugriffskontrolle von ACL funktioniert.
+        </para>
+
+        <para>
+            Wenn das Authentifizierungs Ergebnis nicht erfolgreich war, wird die Anfrage nicht
+            weiter bearbeitet und eine Fehlermeldung wird zurückgegeben mit den Gründen für den
+            Fehlschlag genommen vom Ergebnis
+        </para>
+
+        <para>
+            Der Adapter wird zum Server verbunden indem die <code>setAuth()</code> Methode verwendet
+            wird:
+        <programlisting role="php"><![CDATA[
+$server->setAuth(new My_Amf_Auth());
+]]></programlisting>
+        </para>
+
+        <para>
+            Die Zugriffskontrolle wird durchgeführt indem das <code>Zend_Acl</code> Objekt verwendet
+            wird das von der <code>setAcl()</code> Methode gesetzt wurde:
+        <programlisting role="php"><![CDATA[
+$acl = new Zend_Acl();
+createPermissions($acl); // Zugriffs-Struktur erstellen
+$server->setAcl($acl);
+]]></programlisting>
+        </para>
+
+        <para>
+            Wenn das ACL Objekt gesetzt ist, und die Klasse die aufgerufen wird die
+            <code>initAcl()</code> Methode definiert wird diese Methode, mit dem ACL Objekt als
+            Argument, aufgerufen. Die klasse kann dann zusätzliche ACL Regeln erstellen und
+            <code>true</code> zurückgeben, oder <code>false</code> wenn keine Zugriffskontrolle für
+            diese Klasse benötigt wird.
+        </para>
+
+        <para>
+            Nachdem die ACL gesetzt wurde, wird der Server prüfen ob mit der, von der
+            Authentifizierung gesetzten, Rolle Zugriff erlaubt ist, die Ressource im Klassennamen
+            ist (oder null für Funktionsaufrufe) und ob die Privilegien der Funktionsname sind.
+            Wenn keine Authentifizierung angegeben wurde, wird die <code>anonymous</code> verwendet,
+            wenn diese definiert wurde, andernfalls wird der Zugriff verweigert.
+        <programlisting role="php"><![CDATA[
+if($this->_acl->isAllowed($role, $class, $function)) {
+    return true;
+} else {
+    require_once 'Zend/Amf/Server/Exception.php';
+    throw new Zend_Amf_Server_Exception("Access not allowed");
+}
+]]></programlisting>
+        </para>
+
+        </sect2>
+
 </sect1>
 <!--
 vim:se ts=4 sw=4 et: