Was ist der beste Weg, um einen Benutzer in ExpressionEngine programmatisch zu protokollieren?

8

Ich erstelle eine App, mit der die App auf eine ACT-URL trifft, die dann eine Modulmethode auslöst, um mithilfe der ExpressionEngine-API einen neuen Eintrag zu erstellen. Da jedoch kein Benutzer angemeldet / angemeldet ist, ist es nicht erlaubt, einen Eintrag an einen Kanal zu senden.

Was ist der beste Weg, dies zu tun? Umgehen Sie die EE-API und reichen Sie den Eintrag manuell ein, oder melden Sie einen Benutzer progamatisch an. Aber wie würde das mit Sitzungen usw. funktionieren?

Wenn die Antwort darin besteht, "einen Benutzer einzuloggen", wäre es schön, wenn möglich ein Codebeispiel zu sehen.

Danke!

    
bjohnb 25.10.2012, 16:30
quelle

2 Antworten

12

Wie Sie bereits erwähnt haben, gibt es zwei Möglichkeiten, einen neuen Eintrag hinzuzufügen:

  1. fügen Sie die Datenbankdatensätze
  2. manuell hinzu
  3. Verwenden Sie die Channel Entries API (http://expressionengine.com/user_guide/development/api/api_channel_entries.html)

Die Hauptunterschiede bestehen darin, dass Einträge, die über die API hinzugefügt werden,:

  • Führen Sie alle üblichen Datenvalidierungen durch (dh Felder, die als erforderlich gekennzeichnet sind, dürfen nicht leer sein)
  • Führen Sie alle installierten Drittanbieter-Erweiterungen
  • aus
  • Halten Sie die Seitenstatistik auf dem neuesten Stand (zB die Anzahl der Beiträge des Autors)

Das manuelle Hinzufügen des Eintrags ist relativ einfach für einfache Kanäle, wird jedoch komplizierter, wenn Sie Feldtypen von Drittanbietern verwenden, die zusätzliche Tabellen verwenden.

Um ein Mitglied in dir zu loggen, musst du nur:

%Vor%

Verwenden Sie die Kanaleinträge api, um den Eintrag hinzuzufügen, und dann:

%Vor%

wenn Sie fertig sind.

    
Andrew Weaver 26.10.2012, 09:05
quelle
5

Sie werden sich die Auth.php-Klasse in ./system/libraries/Auth.php ansehen wollen. Diese Klasse ist eine Abstraktion der Authentifizierungs-APIs und ermöglicht es Ihnen, genau das zu tun, was Sie wollen. Die "loggin as user" -Funktion verwendet diese Methoden sowie das Member-Modul.

Sie können auch das Authenticate-Modul (das kostenlos ist) betrachten, damit Sie eine Vorstellung davon bekommen, wie andere mit der Auth-Klasse arbeiten.

Ссылка

Hier ist ein Pseudo-Code, den Sie verwenden können:

%Vor%

Dieser Code sollte funktionieren, aber ich hatte keine Zeit, ihn auszuführen, weshalb er als Pseudocode betrachtet wird.

Ich sollte auch hinzufügen, dass ich nicht sicher bin, ob dies sogar der beste Weg ist, um Ihr Problem zu lösen. Ich beantworte einfach die Fragen "Wie programmiere ich einen Benutzer programmatisch, ohne sein Passwort zu kennen und ohne ein Login-Formular zu senden."

    
Justin Kimbrell 25.10.2012 17:02
quelle

Tags und Links