Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Nach Login die "richtige" Seite anzeigen lassen

Eingetragen von torfnase (1525)
am 21.05.2016 - 12:41 Uhr in
  • Allgemeines zu Drupal
  • Drupal 7.x

Hallo zusammen,
der Betreff ist zugegeben nicht besonders gut, deshalb hier eine kurze Beschreibung eines Szenarios:

Der User bekommt eine Mail mit einem Link zu eine Seite, die einen Login erfordert.
Er klickt den Link und kommt folgerichtig auf die Seite: Access Denied, die einen Link zum Login enthält. Er klickt auf den Login und gibt Username und Passwort ein. Jetzt möchte ich, dass der User auf die Seite weitergeleitet wird, die er ursprünglich aus der Mail geklickt hat.
Eigentlich ein ganz üblicher Vorgang, aber wie kann man das machen ?

Mir ist das Module Login Destination (https://www.drupal.org/project/login_destination) bekannt und es ist klar, dass man die Seite, auf die nach dem Login weitergeleitet wird, auch durch ein kleines PHP Script festlegen lassen kann. Zur Zeit mache ich es so, dass ich das Database Logging eingeschaltet habe und deshalb in der watchdog Tabelle der „Access Denied“ mitgeloggt wird. Ich lese also aus der watchdog-Tabelle den neuesten Eintrag mit Access Denied aus, und da steht drin, wo der User tatsächlich hinwollte. Das klappt natürlich nur, wenn nicht zwei User ungefähr gleichzeitig auf die Access Denied Seite geschickt werden, denn ich lese ja nur den neuesten Eintrag aus der watchdog Tabelle aus.

Gibt es einen besseren Weg ? Wie kann man sonst noch feststellen, welche Seite ein Benutzer sehen wollte, der auf die Access Denied Seite kommt ?

‹ Nach Drupal-Update keine Vertical Tabs mehr im Node-Editor Page cache maximum age ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Bei Drupal habe ich es noch nicht probiert

Eingetragen von ronald (3857)
am 21.05.2016 - 19:15 Uhr

aber du musst den Referer abfangen.
Dort steht drin, wer den access denied ausgelöst hat, und an den musst du es dann weiterleiten.
Aber wenn ich mich recht entsinne, gibt es dafür irgend ein Modul.
Eventuell im Paket von commerce?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Ronald, den Referer

Eingetragen von torfnase (1525)
am 21.05.2016 - 21:11 Uhr

Hallo Ronald,

den Referer abfragen halte ich für keine gute Idee....

zum einen kann man den übermittelten Referer im Browser einstellen, soweit ich das weiß.
Zum anderen muss man damit rechnen, dass der User auf der Login-Seite (dort sind ja meist noch weitere Reiter drauf, wie "create a account" oder "Request new Password") noch andere Links klickt, bevor er sich tatsächlich einloggt.

@commerce
guter Tipp, ich schaue mir da mal die Module an, vielleicht ist ja wirklich was dabei.

Hat denn sonst noch einer eine Idee ? Ich finde, das ist doch ein Standardproblem, welches ich oben beschrieben haben.

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

das geht doch mit rules

Eingetragen von caw (2762)
am 22.05.2016 - 05:10 Uhr

das geht doch mit rules

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Christian, deine

Eingetragen von torfnase (1525)
am 22.05.2016 - 14:40 Uhr

Hallo Christian,
deine Antwort ist ja sehr kurz, und erst dachte ich: Klar geht eine Weiterleitung mit Rules nach dem Login, aber wohin war ja die Frage.

Dann habe ich noch ein bisschen darüber nachgedacht und HEUREKA, ich habe eine Lösung gefunden.

Ich skizziere das mal kurz für alle anderen:

folgende Rule erstellen:
Event: System log enty is created

Conditions: Data comparison
log-entry:type ist gleich access denied

Action: PHP Code: Speichere die $log_entry['message'] in der Session ab.
($log_entry['message'] ist die Seite, auf die der User eigentlich wollte)

Dann eine weitere Rule:
Event: User has logged in

Action: PHP Code:
Aus der Session die NID auslesen
ist da was drin, Session Variable löschen und dorthin weiterleitet
ist da nichts drin,
wie immer auf die Account Seite weiterleiten

Funktioniert wie geschnitten Brot.

Also nochmals Danke für den Denkanstoß :-)

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vllt. hilft LoginToboggan

Eingetragen von C_Logemann (912)
am 22.05.2016 - 21:48 Uhr

Wenn man den Standard-Login-Block nicht nutzen mag, der bei Access-Denied auch zurück zur Seite führt hilft vlt. das
Modul LoginToboggan, das eine Funktion "Present login form on access denied (403)" hat.
Wenn es kein direktes Formular auf der 403-Page sein soll, würde ich eher versuchen einen Link dort zu platzieren, der die Destination an das Login-Formular übergibt. Da gibt es vllt. auch ein Modul für und wenn nicht, ist das leicht zu programmieren in einem Custom Module.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sicherlich würde

Eingetragen von torfnase (1525)
am 23.05.2016 - 00:01 Uhr

Sicherlich würde LoginToboggan auch funktionieren, aber das eigentliche Problem: Wie weiss ich, auf welche Seite der User wollte, wenn er die Access-Denied Seite angezeigt bekommt, löst es natürlich nicht.

Ich habe ja oben schon einen Weg aufgezeigt, wie man das machen kann, siehst du dort irgendwelche Probleme mit meiner Lösung ?

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Erstmal hook_user_login probieren und PHP Filter vermeiden

Eingetragen von C_Logemann (912)
am 23.05.2016 - 09:03 Uhr

Es geht also auch um die Dokumentation dessen, auf welche Adresse, welcher User uneingeloggt zugreifen wollte?
Grundsätzlich ist Dein Ansatz, die Session dafür zu benutzen nach dem Einloggen ein Weg, den ich auch erstmal ins Auge fassen würde. Nur kann man das ja auf unterschiedliche Weise machen.
Ich würde erstmal versuchen zu schauen, ob ich mit hook_user_login weiter komme, bevor ich per Hook (auch indirekt über Rules) das ganze Logging verlangsame. Falls das doch nötig sein sollte, wäre evtl. ein direkter Zugriff sinnvoller als per Rules auch aus Performance-Gründen.
Und wenn Rules ein sinnvoller Weg ist, würde ich dort nicht mit dem PHP-Filter arbeiten, bei dem der Code in der Datenbank gespeichert wird. Das lässt sich schlecht warten und der PHP-Filter sollte nach Möglichkeit aus Sicherheitsgründen auch komplett unterbunden werden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast du das mal angesehen?

Eingetragen von ronald (3857)
am 23.05.2016 - 10:28 Uhr

https://www.drupal.org/project/smart_login

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 3 Tagen
  • Hey danke
    vor 2 Wochen 4 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 6 Tagen
  • In der entsprechenden View
    vor 3 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 6 Tagen
  • gelöst
    vor 6 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20457

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association