{"id":2967,"date":"2017-05-03T00:00:00","date_gmt":"2017-05-03T00:00:00","guid":{"rendered":"https:\/\/structr.com\/blog-app-anleitung\/"},"modified":"2025-03-24T13:46:39","modified_gmt":"2025-03-24T13:46:39","slug":"blog-app-anleitung","status":"publish","type":"post","link":"https:\/\/structr.com\/de\/blog\/blog-app-anleitung\/","title":{"rendered":"Blog-App-Anleitung"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column][vc_column_text]<\/p>\n<h3><a id=\"index\" href=\"#index\">Index<\/a><\/h3>\n<ul>\n<li><a href=\"#overview\">\u00dcbersicht<\/a>\n<ul>\n<li><a href=\"#what-you-will-learn\">Was Sie lernen werden<\/a><\/li>\n<li><a href=\"#you-will-need\">Sie ben\u00f6tigen<\/a><\/li>\n<li><a href=\"#the-features\">Die Merkmale<\/a><\/li>\n<li><a href=\"#format\">Format<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#create-a-new-user\">Einen neuen Benutzer anlegen<\/a>\n<ul>\n<li><a href=\"#check-the-schema\">Pr\u00fcfen Sie das Schema<\/a><\/li>\n<li><a href=\"#create-the-signup-form\">Das Anmeldeformular erstellen<\/a><\/li>\n<li><a href=\"#check-the-data\">Pr\u00fcfen Sie die Daten<\/a><\/li>\n<li><a href=\"#resource-access-grants\">Zusch\u00fcsse f\u00fcr den Ressourcenzugang<\/a><\/li>\n<li><a href=\"#add-bootstrap\">Bootstrap hinzuf\u00fcgen<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#login\">Anmeldung<\/a>\n<ul>\n<li><a href=\"#create-the-ui-and-functionality\">Erstellen der Benutzeroberfl\u00e4che und der Funktionalit\u00e4ten<\/a><\/li>\n<li><a href=\"#overview\">Sicherheit<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Anmeldung und Login: Lose Enden\n<ul>\n<li><a href=\"##redirect-users-on-login-and-signup\">Benutzer bei Anmeldung und Registrierung umleiten<\/a><\/li>\n<li><a href=\"#add-basic-navigation\">Grundlegende Navigation hinzuf\u00fcgen<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#public-feed\">\u00d6ffentlicher Feed<\/a>\n<ul>\n<li><a href=\"#schema\">Schema<\/a><\/li>\n<li><a href=\"#data\">Daten<\/a><\/li>\n<li><a href=\"#pages\">Seiten<\/a>\n<ul>\n<li><a href=\"#create-the-feed-page\">Erstellen Sie die Feed-Seite<\/a><\/li>\n<li>Sidebar: Vorbeugung k\u00fcnftiger loser Enden<\/li>\n<li><a href=\"#display-post-author\">Autor des Beitrags anzeigen<\/a><\/li>\n<li><a href=\"#test-in-incognito\">Test in Inkognito<\/a><\/li>\n<li><a href=\"#redirect-users-to-feed-on-login\">Benutzer bei der Anmeldung zum Feed umleiten<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#create-new-blog-posts\">Neue Blogeintr\u00e4ge erstellen<\/a>\n<ul>\n<li><a href=\"#pages\">Seiten<\/a><\/li>\n<li>Erstellen Sie die WRITER_OF-Beziehung<\/li>\n<li><a href=\"#security\">Sicherheit<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#conclusion\">Schlussfolgerung<\/a><\/li>\n<\/ul>\n<hr>\n<h3><a id=\"overview\" href=\"#overview\">\u00dcbersicht<\/a><\/h3>\n<h4><a id=\"what-you-will-learn\" href=\"#what-you-will-learn\">Was Sie lernen werden<\/a><\/h4>\n<p>Diese Einf\u00fchrung in Structr wird Sie durch die Erstellung einer einfachen Structr-Blog-Anwendung f\u00fchren. Wir beginnen mit einer leeren Structr-Instanz und bauen die Blog-Anwendung Feature f\u00fcr Feature auf, wobei wir Ihnen zeigen, wie Sie mit Zugriffskontrolle, Authentifizierung und der Anwendung von grundlegendem Bootstrap umgehen. <\/p>\n<h4><a id=\"you-will-need\" href=\"#you-will-need\">Sie ben\u00f6tigen<\/a><\/h4>\n<ul>\n<li>Eine neue Structr-Instanz, die in Ihrem Browser l\u00e4uft<\/li>\n<li>Zugriff auf die Kommandozeile zur Ausf\u00fchrung von Structr<\/li>\n<li>Ein Inkognito-Browser-Fenster \u00f6ffnen<\/li>\n<li>Zugang zum <a href=\"https:\/\/neo4j-users.slack.com\/#using-structr\" target=\"_blank\" rel=\"noopener\">neo4j-users Slack<\/a>, damit Sie in #using-structr um Unterst\u00fctzung bitten k\u00f6nnen<\/li>\n<\/ul>\n<h4><a id=\"the-features\" href=\"#the-features\">Die Merkmale<\/a><\/h4>\n<p>Bevor wir beginnen, sollten wir die Funktionen definieren, die die Blogging-Anwendung haben wird. Die Tutorial-Anwendung hat die folgenden Funktionen, die im Folgenden als User Stories vorgestellt werden: <\/p>\n<ul>\n<li>Als \u00f6ffentlicher Benutzer kann ich ein Konto erstellen<\/li>\n<li>Als \u00f6ffentlicher Benutzer kann ich mich mit einem bestehenden Konto anmelden<\/li>\n<li>Als \u00f6ffentlicher oder authentifizierter Benutzer kann ich einen Feed mit allen Beitr\u00e4gen sehen, die sich derzeit in der Anwendung befinden, sortiert von der fr\u00fchesten bis zur ersten Nachricht.<\/li>\n<li>Als authentifizierter Benutzer kann ich neue Blogeintr\u00e4ge erstellen, die einen Titel und einen Text enthalten<\/li>\n<\/ul>\n<p>Die Grundz\u00fcge des Datenmodells ergeben sich aus den folgenden Merkmalen:<\/p>\n<ul>\n<li>Es gibt <strong>Benutzerknoten<\/strong> mit einer Art von <strong>Namen<\/strong> und <strong>Passworteigenschaften<\/strong>.<\/li>\n<li><strong>Post<\/strong> (wie in Blog Post) Knoten werden mit Eigenschaften, die <strong>Titel<\/strong>, <strong>Text<\/strong> und <strong>Erstellungsdatum<\/strong> beschreiben, existieren<\/li>\n<li><strong>WRITER_OF-Beziehungen<\/strong> verbinden Benutzer- und Beitragsknoten<\/li>\n<\/ul>\n<h4><a id=\"format\" href=\"#format\">Format<\/a><\/h4>\n<p>Bei der Entwicklung der einzelnen Funktionen werden die folgenden Punkte behandelt, die nach dem jeweiligen Men\u00fcpunkt in Structr benannt sind:<\/p>\n<ul>\n<li>Seiten<\/li>\n<li>Sicherheit<\/li>\n<li>Schema<\/li>\n<li>Daten<\/li>\n<\/ul>\n<hr>\n<h3><a id=\"create-a-new-user\" href=\"#create-a-new-user\">Einen neuen Benutzer erstellen<\/a><\/h3>\n<ul>\n<li><strong>Seiten<\/strong>: \u00d6ffentliche Benutzer m\u00fcssen die Benutzeroberfl\u00e4che verwenden, um ein Konto zu erstellen. Da es &#8222;Signup&#8220; noch nicht gibt, m\u00fcssen wir eine Seite erstellen <\/li>\n<li><strong>Sicherheit<\/strong>: Nur \u00f6ffentliche Benutzer sollten die Anmeldeoberfl\u00e4che sehen k\u00f6nnen, um neue Benutzer anzulegen.<\/li>\n<li><strong>Schema<\/strong>: Da Structr bereits \u00fcber User-Knoten verf\u00fcgt, werden wir das Schema nicht \u00e4ndern, um die Kontoerstellung zu implementieren.<\/li>\n<li><strong>Daten<\/strong>: Erstellung eines Kontos, wobei bei jeder Anmeldung ein neuer <strong>Benutzer<\/strong> angelegt wird<\/li>\n<\/ul>\n<h4><a id=\"check-the-schema\" href=\"#check-the-schema\">Pr\u00fcfen Sie das Schema<\/a><\/h4>\n<p>Neue Benutzer haben einen <strong>Namen<\/strong> und ein <strong>Passwort<\/strong>.<br \/>\nNavigieren Sie zur Registerkarte <strong>Schema<\/strong> und suchen Sie den Knoten Benutzer in der Hauptansicht. W\u00e4hlen Sie das Bleistiftsymbol, um die Eigenschaften der Benutzer zu pr\u00fcfen und sicherzustellen, dass sowohl <strong>Name<\/strong> als auch <strong>Passwort<\/strong> bereits vorhanden sind: [\/vc_column_text][vc_single_image image=&#8220;1076&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1068&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"create-the-signup-form\" href=\"#create-the-signup-form\">Das Anmeldeformular erstellen<\/a><\/h4>\n<p>Navigieren Sie zur Ansicht <strong>Seiten<\/strong> und dr\u00fccken Sie auf die gr\u00fcne Schaltfl\u00e4che +, um eine neue Seite zu erstellen.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1015&#8243; img_size=&#8220;large&#8220;][vc_column_text]Klicken Sie auf die neu erstellte Registerkarte, um die Seite in <strong>Anmeldung<\/strong> umzubenennen.<\/p>\n<p>Die neue Seite sollte in der <strong>Seitenstrukturansicht<\/strong> (die oberste Registerkarte auf der linken Seite) wie folgt aussehen:<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1021&#8243; img_size=&#8220;large&#8220;][vc_column_text]Wenn Sie mit dem Mauszeiger \u00fcber die Registerkarte &#8222;Anmeldung&#8220; in der Hauptansicht der <strong>Seiten<\/strong> fahren, sollte ein Augensymbol erscheinen:[\/vc_column_text][vc_single_image image=&#8220;1047&#8243; img_size=&#8220;large&#8220;][vc_column_text]Klicken Sie auf das Augapfelsymbol, um eine Vorschau der Seite in Ihrem Browser zu sehen. <strong>Hinweis<\/strong>: Die App kann nur von dem Benutzer angezeigt werden, der mit Admin-Rechten angemeldet ist. Um die \u00f6ffentliche Sichtbarkeit zu testen, verwenden Sie am besten eine Inkognito-Browser-Sitzung, um einen Besucher zu simulieren. <\/p>\n<p>\u00d6ffnen Sie das Men\u00fc <strong>Widgets<\/strong> (in einer Registerkarte auf der rechten Seite des Bildschirms) und suchen Sie das Widget <strong>Panel mit Formular erstellen<\/strong>, ziehen Sie es auf Ihre Seite und legen Sie es ab. Wenn Sie dazu aufgefordert werden, konfigurieren Sie das Widget, um neue Benutzerknoten zu erstellen, und tippen Sie dann auf <strong>Widget anh\u00e4ngen<\/strong>.[\/vc_column_text][vc_single_image image=&#8220;1017&#8243; img_size=&#8220;large&#8220;][vc_column_text]So sollte die <strong>Anmeldeseite<\/strong> bis jetzt aussehen:[\/vc_column_text][vc_single_image image=&#8220;1073&#8243; img_size=&#8220;large&#8220;][vc_column_text]Auch die Benutzer ben\u00f6tigen Passw\u00f6rter. Sp\u00e4ter werden wir ein Feld daf\u00fcr in der <strong>Seitenstrukturansicht<\/strong> hinzuf\u00fcgen.[\/vc_column_text][vc_single_image image=&#8220;1040&#8243; img_size=&#8220;large&#8220;][vc_column_text]W\u00e4hlen Sie das <strong>Div<\/strong> aus, das die <strong>Namensbeschriftung<\/strong> und die Eingabe enth\u00e4lt. Klicken Sie auf das Symbol &#8222;Element klonen&#8220;, um eine Kopie des Divs zu erstellen. Verschieben Sie die Kopie unter das Original und l\u00f6schen Sie den Standardtext &#8222;Initial body text&#8220;, damit die <strong>Anmeldeseite<\/strong> wie folgt aussieht:[\/vc_column_text][vc_single_image image=&#8220;1055&#8243; img_size=&#8220;large&#8220;][vc_column_text]Bearbeiten Sie im kopierten <strong>Div<\/strong> die Beschriftung so, dass sie sich auf das <strong>Passwort<\/strong> des <strong>Benutzers<\/strong>bezieht, indem Sie auf &#8222;Name&#8220; tippen und den Text in &#8222;Passwort&#8220; \u00e4ndern.[\/vc_column_text][vc_single_image image=&#8220;1048&#8243; img_size=&#8220;large&#8220;][vc_column_text]Bearbeiten Sie im kopierten <strong>Div<\/strong> das input.form-Steuerelement so, dass es auf das <strong>Passwort<\/strong> des <strong>Benutzers<\/strong>verweist, indem Sie auf das Symbol <strong>Eigenschaften bearbeiten<\/strong> (das dritte von rechts) klicken und den <strong>Feldnamen<\/strong> in <strong>Passwort<\/strong> \u00e4ndern.[\/vc_column_text][vc_single_image image=&#8220;1061&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1071&#8243; img_size=&#8220;large&#8220;][vc_column_text]Um die neuen Benutzer mit einem <strong>Namen<\/strong> und einem <strong>Kennwort<\/strong> zu speichern, aktualisieren Sie die <strong>Attribute<\/strong> der Schaltfl\u00e4che <strong>Erstellen<\/strong> so, dass sie ein <strong>Kennwort<\/strong> enthalten:[\/vc_column_text][vc_single_image image=&#8220;1057&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1018&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"check-the-data\" href=\"#check-the-data\">Pr\u00fcfen Sie die Daten<\/a><\/h4>\n<p>Klicken Sie auf das Vorschaufenster-Symbol und versuchen Sie, einen neuen Benutzer auf der <strong>Anmeldeseite<\/strong> zu erstellen.<br \/>\nNachdem Sie einen <strong>Namen<\/strong> und ein <strong>Passwort<\/strong> eingegeben haben, sollten Sie Ihren neuen Benutzer auf der <strong>Datenseite<\/strong> von Structr sehen.[\/vc_column_text][vc_single_image image=&#8220;1046&#8243; img_size=&#8220;large&#8220;][vc_column_text]Jetzt gibt es zwei Benutzer: den Administrator und einen neuen Benutzer, der \u00fcber das Anmeldeformular erstellt wurde.<\/p>\n<h4><a id=\"resource-access-grants\" href=\"#resource-access-grants\">Zusch\u00fcsse f\u00fcr den Ressourcenzugang<\/a><\/h4>\n<p>Wir wollen, dass nicht nur authentifizierte Admin-Benutzer neue Benutzer erstellen k\u00f6nnen. Eigentlich sollten nur nicht authentifizierte Benutzer in der Lage sein, <strong>Benutzer<\/strong>anzulegen. \u00d6ffnen Sie die Anmeldeseite in einem Inkognito-Fenster, um die Funktion &#8222;Benutzer erstellen&#8220; als \u00f6ffentlicher Benutzer zu testen. Die Seite sollte einen 404-Fehler anzeigen.<br \/>\nKlicken Sie in der <strong>Seitenstrukturansicht<\/strong> auf das Schl\u00fcsselsymbol, um die <strong>Zugriffssteuerung und Sichtbarkeit<\/strong> der <strong>Anmeldeseite<\/strong> zu bearbeiten<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1039&#8243; img_size=&#8220;large&#8220;][vc_column_text]Aktivieren Sie das Kontrollk\u00e4stchen <strong>Sichtbarkeits\u00e4nderungen rekursiv anwenden?<\/strong>, w\u00e4hlen Sie <strong>Sichtbar f\u00fcr \u00f6ffentliche Benutzer<\/strong> und versuchen Sie, die Seite erneut zu laden.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1037&#8243; img_size=&#8220;large&#8220;][vc_column_text]Wenn Sie versuchen, einen neuen <strong>Benutzerknoten<\/strong> zu erstellen, wird ein 401-Fehler angezeigt:[\/vc_column_text][vc_single_image image=&#8220;1067&#8243; img_size=&#8220;large&#8220;][vc_column_text]Geben Sie in der Ansicht <strong>Sicherheit<\/strong> nicht authentifizierten Benutzern die M\u00f6glichkeit, neue Benutzerknoten mit einer POST-Anforderung zu erstellen:[\/vc_column_text][vc_single_image image=&#8220;1027&#8243; img_size=&#8220;large&#8220;][vc_column_text]Versuchen Sie es erneut und \u00fcberpr\u00fcfen Sie, ob ein neuer Benutzer erstellt wurde.<\/p>\n<h4><a id=\"add-bootstrap\" href=\"#add-bootstrap\">Bootstrap hinzuf\u00fcgen<\/a><\/h4>\n<p>F\u00fcgen Sie etwas Stil hinzu, indem Sie das Bootstrap-Widget suchen und es in den Kopf Ihrer Seite ziehen:[\/vc_column_text][vc_single_image image=&#8220;1033&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1069&#8243; img_size=&#8220;large&#8220;][vc_column_text]Wiederholen Sie den oben beschriebenen Schritt der <a href=\"#resource-access-grants\">Ressourcenzugriffsberechtigung<\/a> (\u00f6ffnen Sie das Men\u00fc, indem Sie auf die Taste in der Zeile <strong>der Anmeldeseite<\/strong> tippen), um nicht authentifizierten Benutzern das Recht zu gew\u00e4hren, das Design Ihrer neuen Anmeldeseite zu sehen und zu nutzen:[\/vc_column_text][vc_single_image image=&#8220;1035&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<hr>\n<h3><a id=\"login\" href=\"#login\">Anmeldung<\/a><\/h3>\n<p>Da wir nun Benutzer anlegen k\u00f6nnen, m\u00f6chten wir uns mit <strong>Namen<\/strong> und <strong>Passwort<\/strong> anmelden.<\/p>\n<p>Zur\u00fcck zur Checkliste:<\/p>\n<ul>\n<li><strong>Seiten<\/strong>: Die Benutzer m\u00fcssen sich \u00fcber eine Anmeldeseite anmelden<\/li>\n<li><strong>Sicherheit<\/strong>: Nur \u00f6ffentliche Benutzer sollten die Benutzeroberfl\u00e4che sehen oder sich anmelden k\u00f6nnen<\/li>\n<li><strong>Schema<\/strong>: Wir wissen, dass es bereits Benutzer gibt, da wir im letzten Schritt einige erstellt haben<\/li>\n<li><strong>Daten<\/strong>: Durch das Einloggen werden die Daten nicht wesentlich ver\u00e4ndert<\/li>\n<\/ul>\n<h4><a id=\"create-the-ui-and-functionality\" href=\"#create-the-ui-and-functionality\">Erstellen der Benutzeroberfl\u00e4che und der Funktionalit\u00e4ten<\/a><\/h4>\n<p>Erstellen Sie eine neue Seite namens <strong>login<\/strong>. Sie k\u00f6nnen sie von Grund auf neu erstellen oder die bereits vorhandene <strong>Anmeldeseite<\/strong> <strong>klonen<\/strong> und das Formular &#8222;Benutzer erstellen&#8220; l\u00f6schen, um Zeit bei der Einrichtung von Bootstrap und der Zugriffskontrolle zu sparen. Um die <strong>Anmeldeseite<\/strong> zu klonen, tippen Sie auf das Klon-Symbol, das sich direkt rechts neben dem Seitennamen in der <strong>Seitenstrukturansicht<\/strong> befindet.[\/vc_column_text][vc_single_image image=&#8220;1064&#8243; img_size=&#8220;large&#8220;][vc_column_text]Ziehen Sie aus der Widget-Bibliothek ein <strong>Login-Form-Widget<\/strong> (unter <strong>Bootstrap &gt; Generic<\/strong>) auf die Seite und bearbeiten Sie es so, dass es den <strong>Namen<\/strong> anstelle von <strong>E-Mail<\/strong> verwendet.[\/vc_column_text][vc_single_image image=&#8220;1014&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"security\" href=\"#security\">Sicherheit<\/a><\/h4>\n<p>Zeigen Sie die Seite in einem Inkognito-Browser an und testen Sie sie mit g\u00fcltigen und ung\u00fcltigen Anmeldeinformationen.<\/p>\n<p>Schalten Sie die Einstellungen f\u00fcr die Zugriffskontrolle auf der Anmeldeseite rekursiv um, damit Benutzer, die keine Administratoren sind, das neue Widget sehen k\u00f6nnen: Tippen Sie auf das Schl\u00fcsselsymbol der Seite, w\u00e4hlen Sie <strong>Sichtbarkeitsschalter rekursiv anwenden&#8230;<\/strong> und deaktivieren Sie die Option <strong>Sichtbar f\u00fcr \u00f6ffentliche Benutzer<\/strong> und w\u00e4hlen Sie sie erneut.[\/vc_column_text][vc_single_image image=&#8220;1025&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00d6ffnen Sie die <strong>Anmeldeseite<\/strong> in einem Inkognito-Browser und versuchen Sie, sich anzumelden. Sie werden die Meldung &#8222;Falscher Benutzername oder Passwort&#8220; erhalten, obwohl Ihre Anmeldedaten korrekt sind. Wenn Sie die Konsole oder das Terminal \u00fcberpr\u00fcfen, das Sie zur Ausf\u00fchrung von Structr verwenden, werden Sie diese Meldung finden:  <\/p>\n<pre><code>INFO  org.structr.web.auth.UiAuthenticator - No resource access grant found for signature _login. (URI: \/structr\/rest\/login)\r\n<\/code><\/pre>\n<p>Um dies zu beheben, f\u00fcgen Sie eine Signatur namens <strong>_login<\/strong> auf der Seite <strong>Sicherheit<\/strong> hinzu.[\/vc_column_text][vc_single_image image=&#8220;1060&#8243; img_size=&#8220;large&#8220;][vc_column_text]Filtern Sie nach dieser neuen Signatur und erteilen Sie \u00f6ffentlichen Benutzern das Recht, darauf zu <strong>POSTen<\/strong>.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1052&#8243; img_size=&#8220;large&#8220;][vc_column_text]Versuchen Sie, sich erneut anzumelden, und behalten Sie die Konsole im Auge.<br \/>\nWenn Sie sich erfolgreich angemeldet haben, sehen Sie<\/p>\n<pre><code>INFO  o.structr.web.resource.LoginResource - Login successful: bc6811eef0dc43408e3b30fb3a3e4931\r\n<\/code><\/pre>\n<p>Versuchen Sie, sich zweimal hintereinander einzuloggen, und beobachten Sie, was Sie sehen werden<\/p>\n<pre><code>org.structr.web.auth.UiAuthenticator - Resource access grant found for signature _login, but method POST not allowed for authenticated users.\r\n<\/code><\/pre>\n<hr>\n<h3><a id=\"signup-and-login-loose-ends\" href=\"#signup-and-login-loose-ends\">Anmeldung und Login: Lose Enden<\/a><\/h3>\n<p>Bevor wir fortfahren, wollen wir noch ein paar Dinge kl\u00e4ren, die sich in der ersten H\u00e4lfte dieses Tutorials angesammelt haben:<\/p>\n<ul>\n<li>Bei der Anmeldung sollten die Benutzer auf die <strong>Anmeldeseite<\/strong> weitergeleitet werden<\/li>\n<li>Bei der Anmeldung sollten die Nutzer auf die <strong>Feed-Seite<\/strong> weitergeleitet werden, die in K\u00fcrze erstellt wird<\/li>\n<li>\u00d6ffentliche Nutzer sollten in der Lage sein, von der Anmeldeseite zur Anmeldeseite zu navigieren und umgekehrt<\/li>\n<\/ul>\n<h4><a id=\"redirect-users-on-login-and-signup\" href=\"#redirect-users-on-login-and-signup\">Benutzer bei Anmeldung und Registrierung umleiten<\/a><\/h4>\n<p>Gehen Sie \u00fcber die Schaltfl\u00e4chen f\u00fcr die Anmeldung und die Registrierung auf die Seite  <strong>Eigenschaften bearbeiten &gt; Bearbeitungsmodus Bindung<\/strong>  und geben Sie den Pfad zur Zielseite ( <strong>\/feed<\/strong> f\u00fcr <strong>Login<\/strong> und <strong>\/login<\/strong> f\u00fcr <strong>Signup<\/strong>) in das Feld Return URI after successful action ein.<\/p>\n<h4><a id=\"add-basic-navigation\" href=\"#add-basic-navigation\">Grundlegende Navigation hinzuf\u00fcgen<\/a><\/h4>\n<p>Um das Testen zu verbessern, \u00f6ffnen Sie die <strong>HTML-Palette<\/strong> und ziehen Sie einige <strong>Elemente<\/strong> auf die <strong>Anmelde-<\/strong> und <strong>Login-Seiten<\/strong>, damit Sie leicht von einer Seite zur anderen navigieren k\u00f6nnen, ohne die URL eingeben zu m\u00fcssen.<\/p>\n<p>Auf der <strong>Anmeldeseite<\/strong> k\u00f6nnen Sie zum Beispiel einen Link einf\u00fcgen, auf dem steht &#8222;Login stattdessen!&#8220;.[\/vc_column_text][vc_single_image image=&#8220;1030&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1042&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<hr>\n<h3><a id=\"public-feed\" href=\"#public-feed\">\u00d6ffentlicher Feed<\/a><\/h3>\n<p><em>Als \u00f6ffentlicher oder authentifizierter Benutzer kann ich einen Feed mit allen Beitr\u00e4gen sehen, die sich derzeit in der Anwendung befinden, sortiert von den fr\u00fchesten bis zu den ersten.<\/em><\/p>\n<p>Zur\u00fcck zur Checkliste<\/p>\n<ul>\n<li><strong>Schema<\/strong>: Beitr\u00e4ge sollten existieren, um den Feed zu f\u00fcllen, und eine <strong>WRITER_OF-Beziehung<\/strong> zu ihrem Autor haben<\/li>\n<li><strong>Daten<\/strong>: Der Administrator muss in der Lage sein, Testbeitr\u00e4ge zu erstellen, um den Feed zu f\u00fcllen.<\/li>\n<li><strong>Seiten<\/strong>: Die Benutzeroberfl\u00e4che f\u00fcr den Feed sollte auf einer eigenen Seite bestehen, auf der der Titel des Beitrags, der Autor, das Erstellungsdatum und der Text angezeigt werden.<\/li>\n<li><strong>Sicherheit<\/strong>: Sowohl \u00f6ffentliche als auch authentifizierte Nutzer sollten in der Lage sein, den Feed und die Beitr\u00e4ge im Feed zu sehen.<\/li>\n<\/ul>\n<h4><a id=\"schema\" href=\"#schema\">Schema<\/a><\/h4>\n<p>F\u00fcgen Sie auf der Registerkarte <strong>Schema<\/strong> einen <strong>Post-Knoten<\/strong> und eine <strong>WRITER_OF-Beziehung<\/strong> hinzu, wie in der folgenden Abbildung beschrieben. Um eine Beziehung zu erstellen, tippen Sie auf den Anker (Kreis am Rand des Startknoten-Rechtecks) und ziehen Sie den gr\u00fcnen Pfeil auf einen Kreis am Rand des Endknoten-Rechtecks.[\/vc_column_text][vc_single_image image=&#8220;1044&#8243; img_size=&#8220;large&#8220;][vc_column_text]F\u00fcgen Sie die Eigenschaften <strong>body<\/strong> und <strong>title<\/strong> zu den <strong>Post-Knoten<\/strong> hinzu. Speichern Sie, indem Sie das gr\u00fcne H\u00e4kchen unter &#8222;Aktion&#8220; hinzuf\u00fcgen.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1059&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1074&#8243; img_size=&#8220;large&#8220;][vc_column_text]Machen Sie <strong>Post-Knoten<\/strong> mit einigen <strong>onCreate-Funktionen<\/strong> f\u00fcr \u00f6ffentliche und authentifizierte Benutzer sichtbar. Tippen Sie auf die Schaltfl\u00e4che &#8222;Add onCreate&#8220;, um zwei Funktionen vom Typ onCreate hinzuzuf\u00fcgen (siehe unten):[\/vc_column_text][vc_single_image image=&#8220;1043&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00dcberpr\u00fcfen Sie, ob die Daten wie erwartet angezeigt werden, indem Sie auf der Registerkarte <strong>Daten<\/strong> neue <strong>Post-Knoten<\/strong> erstellen:[\/vc_column_text][vc_single_image image=&#8220;1022&#8243; img_size=&#8220;large&#8220;][vc_column_text]<em>Tipp: Vergessen Sie nicht, die lokalen Attribute mit dem kleinen gr\u00fcnen H\u00e4kchen zu speichern.<\/em><\/p>\n<h4><a id=\"data\" href=\"#data\">Daten<\/a><\/h4>\n<p>Da es keine M\u00f6glichkeit gibt, neue <strong>Post-Knoten<\/strong> \u00fcber die UI zu erstellen, verwenden Sie den Structr-Admin, um einige zus\u00e4tzliche <strong>Test-Posts<\/strong>zu erstellen. F\u00fcgen Sie Beziehungen zwischen <strong>Benutzern<\/strong>und <strong>Beitr\u00e4gen<\/strong>hinzu, indem Sie neue <strong>UserWRITER_OFPost<\/strong> Instanzen erstellen. <\/p>\n<p><em>Tipp: Vergessen Sie nicht, die Felder Titel und Text auszuf\u00fcllen.<\/em>[\/vc_column_text][vc_single_image image=&#8220;1049&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"pages\" href=\"#pages\">Seiten<\/a><\/h4>\n<h5><a id=\"create-the-feed-page\" href=\"#create-the-feed-page\">Erstellen Sie die Feed-Seite<\/a><\/h5>\n<p>Kopieren Sie die <strong>Anmeldeseite<\/strong>, l\u00f6schen Sie den Anmeldeteil und benennen Sie die neue Seite als <strong>Feed<\/strong>. So sollte die Seite aussehen, bevor Sie irgendwelche feedspezifischen Elemente hinzuf\u00fcgen:[\/vc_column_text][vc_single_image image=&#8220;1023&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00d6ffnen Sie die <strong>HTML-Palette<\/strong> auf der rechten Seite, um HTML-Elemente nach Bedarf hineinzuziehen.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1024&#8243; img_size=&#8220;large&#8220;][vc_column_text]Das Zwischenelement <strong>Post<\/strong> k\u00f6nnte etwa so aussehen:<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1050&#8243; img_size=&#8220;large&#8220;][vc_column_text]Tippen Sie auf das Symbol &#8220; <strong>Eigenschaften bearbeiten&#8220;<\/strong> des \u00fcbergeordneten <strong>Divs<\/strong> des <strong>Beitrags<\/strong>und f\u00fcgen Sie eine Cypher-Abfrage hinzu, um den Feed zu f\u00fcllen.<\/p>\n<p>Cypher Query:<\/p>\n<pre><code>MATCH (post:Post)\r\nRETURN post\r\n<\/code><\/pre>\n<p> Data Key:<\/p>\n<pre><code>post<\/code><\/pre>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1063&#8243; img_size=&#8220;large&#8220;][vc_column_text]Um die Daten zu verwenden, ersetzen Sie die Platzhalter wie folgt:[\/vc_column_text][vc_single_image image=&#8220;1053&#8243; img_size=&#8220;large&#8220;][vc_column_text]Beachten Sie, dass der Autor des <strong>Beitrags<\/strong>nicht ausgef\u00fcllt ist, da Autor keine Eigenschaft von <strong>Beitrag<\/strong> ist.<\/p>\n<h4><a id=\"sidebar-preventing-future-loose-end\" href=\"#sidebar-preventing-future-loose-end\">Sidebar: Vorbeugung k\u00fcnftiger loser Enden<\/a><\/h4>\n<p>Bevor Sie fortfahren, sollten Sie \u00fcberlegen, ob Sie eine Abmeldeschaltfl\u00e4che hinzuf\u00fcgen und eine M\u00f6glichkeit, zu erkennen, als welcher Benutzer Sie angemeldet sind. Dies wird hilfreich sein, wenn Sie weiter unten im Lernprogramm Blogbeitr\u00e4ge als Nicht-Administrator erstellen. <\/p>\n<p>W\u00e4hlen Sie eine <strong>(konfigurierbare) Abmelde-Schaltfl\u00e4che<\/strong> aus dem Widget-Men\u00fc und ziehen Sie sie an eine leicht zu verwaltende Stelle in Ihrer Feed-Ansicht. Machen Sie die Abmelde-Schaltfl\u00e4che nur f\u00fcr authentifizierte Benutzer sichtbar und f\u00fcgen Sie eine Signatur namens <strong>_logout<\/strong> auf der Seite <strong>Sicherheit<\/strong> hinzu. <\/p>\n<p>*Tipp: Vergessen Sie nicht, authentifizierten Benutzern die Erlaubnis zu erteilen, auf <strong>_logout<\/strong> zu <strong>POSTen<\/strong>.[\/vc_column_text][vc_single_image image=&#8220;1062&#8243; img_size=&#8220;large&#8220;][vc_column_text]Zeigen Sie den Namen des aktuellen Benutzers an, indem Sie den Text der Schaltfl\u00e4che in \u00e4ndern:<\/p>\n<p><strong>Eingeloggt als ${me.name}. Abmelden. <\/strong><\/p>\n<p>Zum Beispiel, wenn Sie sich als Benutzer bob angemeldet haben:[\/vc_column_text][vc_single_image image=&#8220;1075&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"display-post-author\" href=\"#display-post-author\">Autor des Beitrags anzeigen<\/a><\/h4>\n<p>Die Futtermittel sollten jeweils angezeigt werden:<\/p>\n<ul>\n<li>Titel des Beitrags<\/li>\n<li>Poststelle<\/li>\n<li>Beitrag Autor<\/li>\n<li>Erstellungsdatum des Beitrags<\/li>\n<\/ul>\n<p>Die aktuellen Beitr\u00e4ge haben die meisten dieser Elemente, aber es fehlen die Autoren der Beitr\u00e4ge. Bereiten Sie die Abfrage vor, die der Feed verwenden soll, um die Beitr\u00e4ge mit den Verfasserangaben zu f\u00fcllen, und testen Sie sie mit der integrierten Cypher-Konsole, die sich mit <strong>STRG+ALT+C &gt; SHIFT + TAB<\/strong> \u00f6ffnet. <\/p>\n<pre><code>MATCH (post:Post)&lt;-[]-(user:User) RETURN {title:post.title, body:post.body, createdDate:post.createdDate, author:user.name} AS post ORDER BY post.createdDate DESC LIMIT 10; \/\/limit for the sake of the Cypher console, remove in the app itself\r\n<\/code><\/pre>\n<p><strong>STRG+ALT+C (oder STRG+SHIFT+C)<\/strong>[\/vc_column_text][vc_single_image image=&#8220;1012&#8243; img_size=&#8220;large&#8220;][vc_column_text]<strong>SHIFT + TAB<\/strong>, um die Cypher-Konsole zu erreichen<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1034&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00d6ffnen Sie das <strong>Post-Div<\/strong> und f\u00fcgen Sie die aktualisierte Abfrage ein, wobei Sie das <strong>LIMIT 10<\/strong> entfernen.[\/vc_column_text][vc_single_image image=&#8220;1070&#8243; img_size=&#8220;large&#8220;][vc_column_text]Aktualisieren Sie den Autorenplatzhalter auf <strong>${post.author}<\/strong> und schauen Sie sich Ihre Beitr\u00e4ge an:<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1054&#8243; img_size=&#8220;large&#8220;][vc_single_image image=&#8220;1077&#8243; img_size=&#8220;large&#8220;][vc_column_text]Reparieren Sie die Datumsformatierung mit der Funktion <strong>date_format<\/strong>:<\/p>\n<p><strong>Verfasst am ${date_format(post.createdDate,&#8217;yyyy-MM-dd&#8216;)}<\/strong><\/p>\n<h4><a id=\"test-in-incognito\" href=\"#test-in-incognito\">Test in Inkognito<\/a><\/h4>\n<p>Zeigen Sie eine Vorschau des Feeds in einem neuen Inkognito-Browser an und \u00fcberpr\u00fcfen Sie, ob Sie den Feed sowohl als \u00f6ffentlicher als auch als authentifizierter Benutzer sehen k\u00f6nnen, indem Sie <strong>die Sicherheit der Seite so lange umschalten<\/strong>, bis sie wie erwartet funktioniert.<\/p>\n<h4><a id=\"redirect-users-to-feed-on-login\" href=\"#redirect-users-to-feed-on-login\">Benutzer bei der Anmeldung zum Feed umleiten<\/a><\/h4>\n<p>Gehen Sie zur\u00fcck zur Anmeldestruktur und w\u00e4hlen Sie die Schaltfl\u00e4che &#8222;Anmelden&#8220;.[\/vc_column_text][vc_single_image image=&#8220;1020&#8243; img_size=&#8220;large&#8220;][vc_column_text]Geben Sie unter <strong>Bindung im Bearbeitungsmodus<\/strong> die <strong>R\u00fcckgabe-URI<\/strong> mit der Seite ein, die die Benutzer bei der Anmeldung sehen sollen, in diesem Fall <strong>Feed<\/strong>. Stellen Sie sicher, dass die Seite f\u00fcr authentifizierte Benutzer sichtbar ist. <\/p>\n<p>Sie sollten dasselbe mit der <strong>Anmeldung<\/strong> tun.[\/vc_column_text][vc_single_image image=&#8220;1026&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<hr>\n<h3><a id=\"create-new-blog-posts\" href=\"#create-new-blog-posts\">Neue Blogeintr\u00e4ge erstellen<\/a><\/h3>\n<p><em>Als authentifizierter Benutzer kann ich neue Blogeintr\u00e4ge erstellen, die einen Titel und einen Text enthalten.<\/em><\/p>\n<ul>\n<li><strong>Schema<\/strong>: Das Schema ist bereits f\u00fcr die Erstellung von Blogbeitr\u00e4gen vorbereitet<\/li>\n<li><strong>Daten<\/strong>: Authentifizierte Nutzer k\u00f6nnen Beitr\u00e4ge erstellen, was zu mehr Daten f\u00fchrt!<\/li>\n<li><strong>Seiten<\/strong>: Die Feed-Seite wird so bearbeitet, dass die Nutzer Posts erstellen k\u00f6nnen<\/li>\n<li><strong>Sicherheit<\/strong>: Authentifizierte Benutzer k\u00f6nnen Beitr\u00e4ge erstellen<\/li>\n<\/ul>\n<h4><a id=\"pages\" href=\"#pages\">Seiten<\/a><\/h4>\n<p>\u00d6ffnen Sie das Men\u00fc Widgets und suchen Sie nach dem <strong>Panel mit Formular erstellen (konfigurierbar)<\/strong>. Ziehen Sie dann eine Instanz davon in den Body der Feed-Seite, unterhalb der h1.[\/vc_column_text][vc_single_image image=&#8220;1041&#8243; img_size=&#8220;large&#8220;][vc_column_text]W\u00e4hlen Sie <strong>Post<\/strong> als Typ des Widgets.[\/vc_column_text][vc_single_image image=&#8220;1032&#8243; img_size=&#8220;large&#8220;][vc_column_text]Das Widget erstellt standardm\u00e4\u00dfig Beitr\u00e4ge mit Namenseigenschaften. Es wird bearbeitet, um Beitr\u00e4ge mit den Eigenschaften <strong>Titel<\/strong> und <strong>Text<\/strong> zu erstellen.<\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1013&#8243; img_size=&#8220;large&#8220;][vc_column_text]Erstellen Sie eine Kopie des <strong>Divs<\/strong>, das die <strong>Namenseingabe<\/strong> umschlie\u00dft, und ziehen Sie es unter die Namensteile.[\/vc_column_text][vc_single_image image=&#8220;1016&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00c4ndern Sie das obere Feld mit der Bezeichnung Name in <strong>title<\/strong> und das untere Feld mit der Bezeichnung Name in <strong>body<\/strong> post. Sie m\u00fcssen auch ihre Namen bearbeiten, indem Sie in den <strong>Bearbeitungsmodus<\/strong> gehen <strong>und &gt; Feld<\/strong> in <strong>Titel<\/strong> bzw. <strong>Body<\/strong> \u00e4ndern.[\/vc_column_text][vc_single_image image=&#8220;1058&#8243; img_size=&#8220;large&#8220;][vc_column_text]Bearbeiten Sie die Schaltfl\u00e4che <strong>Erstellen<\/strong> entsprechend:[\/vc_column_text][vc_single_image image=&#8220;1051&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4><a id=\"make-the-writer-of-relationship\" href=\"#make-the-writer-of-relationship\">Erstellen Sie die WRITER_OF-Beziehung<\/a><\/h4>\n<p>Hinzuf\u00fcgen einer<select>und<option>Element zu Ihrer<\/option><\/select><strong>Beitrag erstellen<\/strong><select><option>Formular.<\/option><\/select><\/p>\n<p>[\/vc_column_text][vc_single_image image=&#8220;1028&#8243; img_size=&#8220;large&#8220;][vc_column_text]Konfigurieren Sie das <strong>Select-Element<\/strong> so, dass es den Namen <strong>WRITER_OF-Beziehung<\/strong> wiedergibt.[\/vc_column_text][vc_single_image image=&#8220;1072&#8243; img_size=&#8220;large&#8220;][vc_column_text]Damit das Select-Element ausgeblendet wird, f\u00fcgen Sie unter den <strong>HTML-Attributen<\/strong> die html-Klasse &#8222;hidden&#8220; hinzu:[\/vc_column_text][vc_single_image image=&#8220;1056&#8243; img_size=&#8220;large&#8220;][vc_column_text]Konfigurieren Sie die Option so, dass sie die ID des aktuellen Benutzers als Wert hat und automatisch ausgew\u00e4hlt wird.[\/vc_column_text][vc_single_image image=&#8220;1036&#8243; img_size=&#8220;large&#8220;][vc_column_text]F\u00fcgen Sie das Attribut zur Schaltfl\u00e4che <strong>Erstellen<\/strong> hinzu.[\/vc_column_text][vc_single_image image=&#8220;1065&#8243; img_size=&#8220;large&#8220;][vc_column_text]\u00c4ndern Sie die Kardinalit\u00e4t der Beziehung zwischen Benutzer und Beitrag, so dass ein Beitrag nur einen Autor haben kann.[\/vc_column_text][vc_single_image image=&#8220;2968&#8243; img_size=&#8220;large&#8220;][vc_column_text]Der aktuell angemeldete Benutzer wird als einziger Verfasser des aktuellen Beitrags festgelegt.<br \/>\nDas Endergebnis sollte in etwa so aussehen:[\/vc_column_text][vc_single_image image=&#8220;1031&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<hr>\n<h3><a id=\"security\" href=\"#security\">Sicherheit<\/a><\/h3>\n<p>Obwohl authentifizierte und \u00f6ffentliche Benutzer die <strong>Feed-Seite<\/strong> sehen k\u00f6nnen sollten, k\u00f6nnen nur authentifizierte Benutzer Beitr\u00e4ge schreiben. Setzen Sie die <strong>Sichtbarkeit<\/strong> des Formulars auf authentifizierte Benutzer.[\/vc_column_text][vc_single_image image=&#8220;1045&#8243; img_size=&#8220;large&#8220;][vc_column_text]Stellen Sie auf der Registerkarte <strong>Sicherheit &gt; Ressourcenzugriffsrechte<\/strong> sicher, dass authentifizierte Benutzer Beitr\u00e4ge erstellen k\u00f6nnen.[\/vc_column_text][vc_single_image image=&#8220;1066&#8243; img_size=&#8220;large&#8220;][vc_column_text]Testen Sie die Anwendung in einem Inkognito-Fenster und stellen Sie sicher, dass alles wie erwartet funktioniert:<\/p>\n<ul>\n<li>\u00d6ffentliche Nutzer sollten den Feed sehen k\u00f6nnen<\/li>\n<li>Authentifizierte Benutzer sollten den Feed sehen k\u00f6nnen<\/li>\n<li>Authentifizierte Benutzer sollten das Panel &#8222;Beitrag erstellen&#8220; sehen und nutzen k\u00f6nnen<\/li>\n<li>\u00d6ffentliche Benutzer sollten das Bedienfeld &#8222;Beitrag erstellen&#8220; nicht sehen oder verwenden k\u00f6nnen.<\/li>\n<\/ul>\n<p>Wenn eine der Anforderungen nicht erf\u00fcllt ist, schalten Sie die Sichtbarkeitsoptionen f\u00fcr die betreffenden Elemente um, bis sie erf\u00fcllt sind.[\/vc_column_text][vc_single_image image=&#8220;1029&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<hr>\n<h3><a id=\"conclusion\" href=\"#conclusion\">Schlussfolgerung<\/a><\/h3>\n<p>Sie sind fertig! Folgen Sie den Schritten hier <a href=\"https:\/\/support.structr.com\/article\/225\">https:\/\/support.structr.com\/article\/225<\/a>, um Ihre Arbeit zu exportieren, und erstellen Sie die App, die Sie schon immer mit Structr haben wollten :)[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text] Index \u00dcbersicht Was Sie lernen werden Sie ben\u00f6tigen Die Merkmale Format Einen neuen Benutzer anlegen Pr\u00fcfen Sie das Schema \u2026<\/p>\n","protected":false},"author":2,"featured_media":2968,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[543,879],"tags":[882,549,552,881,546,560,556,550,880,547,623,884,585,548,545,555,557,551,885,883],"class_list":["post-2967","post","type-post","status-publish","format-standard","hentry","category-structr-de","category-tutorial-de","tag-authentifizierung","tag-automatisierung","tag-backend-de","tag-bloganwendung","tag-bootstrap-de","tag-datamodel-de","tag-graphdatabase-de","tag-kodierung","tag-lehrgang","tag-neo4j-de","tag-rest-de","tag-schema-de","tag-sicherheit","tag-software-entwicklung","tag-structr-de","tag-ui-de","tag-vorderseite","tag-web-entwicklung","tag-ziffernabfrage","tag-zugriffskontrolle"],"acf":[],"_links":{"self":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/comments?post=2967"}],"version-history":[{"count":2,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2967\/revisions"}],"predecessor-version":[{"id":2973,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2967\/revisions\/2973"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/media\/2968"}],"wp:attachment":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/media?parent=2967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/categories?post=2967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/tags?post=2967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}