Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LogIn bei MVC

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] LogIn bei MVC

    Erstmals begrüße ich alle hier im Forum .

    Ich habe gleich eine Problemstellung anzusprechen. Ich bin gerade bei der Umsetzung eines kleinen MVC-Frameworks. Ich arbeite das erste mal mit dem MVC-Konzept..

    Also es gibt eine Benutzer-, sowie Administratorebene. Darum gibt es logischerweise Benutzer und Administratoren. Mein Problem ist, wie ich hier eine LogIn-Prüfung umsetze? Ich dachte mir vielleicht als Oberklasse für alle Controller eine Klasse einzurichten, die Methoden bereitstellt, die die Sessions überprüfen!? Diese Klasse erben dann die entsprechenden Klassen, entweder auf Benutzer- oder Administratorebene und führen dementsprechend eine Prüfung durch.

    Meine Frage ist nun ob dieser Lösungsansatz denkbar wäre, oder ob es noch bessere gibt?

    Wäre gut, wenn mir jemand helfen könnte

    Grüße,
    Kasi


  • #2
    Ich verstehe noch nicht so ganz worum es dir geht. Geht es um den Login-Vorgang als solches oder um die Prüfung welche Rechte der (irgendwann mal) eingeloggte User hat? Kannst du das mal genauer beschreiben?

    Kommentar


    • #3
      Die Session-Variablen sind doch superglobal,
      Du kannst in jeder Klasse prüfen ob eingeloggt oder nicht.

      Oder Du prüfst nur einmal und reichst den Status "eingeloggt" als Parameter bei der Objekterstellung weiter.

      Diese Klasse erben dann die entsprechenden Klassen,
      wieso sollte eine Klasse von einer eingeloggt-prüfen-Klasse erben ?

      Vererbung hat den Sinn, daß die erbende Klasse eine Untermenge der Elternklasse ist
      und diese erweitert bzw. näher spezifiziert.
      Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

      Kommentar


      • #4
        Das was der Controller macht hat nichts mit der User Authentifizierung zutun! Daher sollte das Session Objekt bzw. die Objekte die zur Authentifizierung und Autorisierung dienen getrennt vom Rest gehalten werden.

        Außerdem möchtest du ja flexibel bleiben und nicht nur per Sessions, sondern auch per Cookie, HTTP AUTH oder über LDAP oder andere externe Authentifizierungsverfahren deinen Login durchführen.

        Kommentar


        • #5
          Also ich habe auch Programme die zwingend einen Login benötigen, wo also ein "Gast" nur den Login-Screen zu sehen bekommt. Da wird vor dem Laden des Controllers geprüft ob die Person eingeloggt ist und falls nicht wird auf den Login-Controller geroutet.

          Kommentar


          • #6
            Du hast aber die Loginroutine und die Session Überprüfung nicht in einer abstrakten Klasse von der alle Controller erben oder?

            Kommentar


            • #7
              Mit dem Vererben, das ist in meinen Augen zu unflexibel. Was ist, wenn Du noch etwas bei jedem Seitenaufruf prüfen willst? Noch mal vererben? Ich habe es bei mir so gelöst, dass der Front-Controller an verschiedenen Stellen Events aufruft, an die man Callbacks anhängen kann.

              Kommentar


              • #8
                Es geht mir nicht um Rechte. Es geht mir einfach nur um die Prüfung der Sessiongültigkeit. Einfach eine if-Anweisung .. Meine Frage ist nur, wo ich das am besten unterbringe. Wenn ich in jeder Klasse prüfen muss, ob ein User eingeloggt ist, dann ist das auch nicht zielführend.

                Ich habe eine Routerklasse, die die entsprechenden Controller lädt. Vielleicht sollte ich die Prüfung hier implementieren? Wäre das sinnvoll? (Wie gesagt, ich bin noch nicht so erfahren im Entwerfen eines MVC-Musters, darum meine Frage).

                Kommentar


                • #9
                  Zitat von Flor1an Beitrag anzeigen
                  Du hast aber die Loginroutine und die Session Überprüfung nicht in einer abstrakten Klasse von der alle Controller erben oder?
                  Nee, ich habe eine eigenständige Klasse dafür. Diese wird bei jedem Request (noch bevor der Router seine Arbeit getan hat) geladen und macht ihre Arbeit. Der Router fragt dann nur noch ob eingeloggt oder nicht und leitet entsprechende Maßnahmen ein.

                  Kommentar


                  • #10
                    Zitat von cycap Beitrag anzeigen
                    Nee, ich habe eine eigenständige Klasse dafür. Diese wird bei jedem Request (noch bevor der Router seine Arbeit getan hat) geladen und macht ihre Arbeit. Der Router fragt dann nur noch ob eingeloggt oder nicht und leitet entsprechende Maßnahmen ein.
                    Klingt interessant. Kannst du das bitte genauer beschreiben, wie du da vorgehst?

                    Kommentar


                    • #11
                      Nein entwickel eine eigene Klasse/Objekt die die Überprüfung macht. Was ist wenn du mal ne Seite haben willst wo der User nicht eingeloggt sein muss? Zum Beispiel "registrieren" dann wird trotzdem geprüft was aber unnötig ist.

                      Kommentar


                      • #12
                        Zitat von Kasi Beitrag anzeigen
                        Klingt interessant. Kannst du das bitte genauer beschreiben, wie du da vorgehst?
                        Nun, was hast du denn für eine Frage? Im übrigen ist die angesprochene Applikation darauf ausgelegt das es keinen "Gast"-Zugang gibt. Sollte es bei dir Hauptsächlich um z.B. ein CMS gehen, wo 99% der User gar nicht eingeloggt sind, dann wäre vielleicht eine andere Vorgehensweise komfortabler. Ich weiss ja nicht was du vorhast.

                        Kommentar


                        • #13
                          Zitat von cycap Beitrag anzeigen
                          Nun, was hast du denn für eine Frage? Im übrigen ist die angesprochene Applikation darauf ausgelegt das es keinen "Gast"-Zugang gibt. Sollte es bei dir Hauptsächlich um z.B. ein CMS gehen, wo 99% der User gar nicht eingeloggt sind, dann wäre vielleicht eine andere Vorgehensweise komfortabler. Ich weiss ja nicht was du vorhast.
                          Nein, bis auf die Startseite soll definitiv kein Gast Zugang haben. Meine Frage ist nun, inwiefern ich nun diese Prüfung im Router implementieren soll?

                          Kommentar


                          • #14
                            Zum Beispiel "registrieren" dann wird trotzdem geprüft was aber unnötig ist.
                            Doch. Es soll ja i. d. R. verhindert werden, dass eingeloggte User sich registrieren können. Und ein generischer Ansatz vereinfacht die ganze Sache - Da würde ich keine Ausnahmen machen, die das verkomplizieren würden.

                            Kommentar


                            • #15
                              Meine Frage ist nun, inwiefern ich nun diese Prüfung im Router implementieren soll?
                              im Router hat doch niemand gesagt.
                              Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                              Kommentar

                              Lädt...
                              X