Seite 1 von 1

django sessions ohne (request)

Verfasst: Montag 28. Januar 2008, 20:40
von d3f3nd3r
heo

hat jemand von euch Erfahrung mit session variablen in Funktionen die ohne request aufgerufen werden?

Ich würde gerne eine Funktion schreiben, die überprüft ob eine sessionvariable gesetzt ist oder nicht (damit soll überprüft werden, ob ein user eingeloggt ist oder nicht), da ich diese auf meiner hp öfters brauche.

Nur leider bekommt man mit :

Code: Alles auswählen

from django.contrib.sessions.models import Session

s = Session.objects.all()

bekomme ich ein Object Liste und auf die kann ich get_decoded() nicht anwenden.
Und einzelen Objekte kann ich nicht herausholen, da ich nicht weiß welche Attribute das Obj hat,,,,

kann mir da jemand helfen?

mfg

Verfasst: Mittwoch 30. Januar 2008, 12:04
von jens
Der normale Weg dürfte sein, das request Objekt an deine Funktion zu übergeben und fertig. Warum willst du das nicht tun?

Verfasst: Mittwoch 30. Januar 2008, 13:57
von d3f3nd3r
ja weil ich dann doch im aufrufenden programm immer

Code: Alles auswählen

               try :
                  function(request.session['foo'])
                except  KeyError:
                     error


und das wollte ich auslagern.....

mfg

Verfasst: Mittwoch 30. Januar 2008, 13:58
von jens
verstehe ich jetzt nicht...

Meinst du sowas:

Code: Alles auswählen

foo = request.session.get("Foo", False)

Verfasst: Mittwoch 30. Januar 2008, 14:05
von d3f3nd3r
also konkret schaut das bei mir so aus:

wenn sich ein benutzer einloggt wird das user objekt als sessionvariable gespeichert. wenn dieser benutzer jetzt auf geschützte bereiche zugreifen will wird überprüft ob der benutzer eingeloggt ist (also ob die sessionvariable 'act_user' gesetzt ist). da dies öfters verkommt wäre es doch bessere diese try & except sache auszulagern (vor allem der übersicht halber), oder?

mfg

ps : kann auch sein, dass mein system komplett unsicher ist (falls das so wäre würd ich mich über verbesserungsvorschläge freuen, da ich beim thema login sicherheit keine erfahrung habe)

Verfasst: Mittwoch 30. Januar 2008, 14:07
von Leonidas
Du kannst auch einen Dekorator um die Views bauen der checkt ob der User eingeloggt ist. Da gibts im Internet sicher schon fertiges.

Verfasst: Mittwoch 30. Januar 2008, 14:07
von jens

Verfasst: Mittwoch 30. Januar 2008, 14:12
von d3f3nd3r
hm ja das klingt intressant, danke ;-)
aber noch eine Frage :
zurzeit benutze ich ein eigenes User Objekt, ist es ratsam das django Objekt zu benutzen?
Wie ist es da mit zusätzlichen Daten?

Verfasst: Mittwoch 30. Januar 2008, 17:59
von jens
Du hast Vorteile, wenn du das django User Modell benutzt... Denn damit kannst du die ganze Auth contrib erst richtig nutzten...

Zusätzliche Daten "anhaften" kann man schon, ist aber mit Aufwand verbunden... Leider kann ich dir jetzt spontan keine Idee nennen, wie man das macht... In PyLucid erstelle ich für jeden django Benutzer noch ein zusätzliches Passwort. Das mache ich quasi per Monkey-Patch...

Verfasst: Donnerstag 31. Januar 2008, 13:54
von d3f3nd3r
ja hab gestern damit herumexperimentiert und bin draufgekommen, dass dort alle Funktionen die ich bis jetzt implementiert habe auch implementiert sind (vermutlich sogar viel besser ;-))

eine Frage hätt ich aber noch : der login view des Frameworks ist nett nur da ich das Inhaltsverzeichnis dynamisch einbinde ist man bei dem standard view verloren (keine navi =().

so weit das vorwort^^ :
wie kann ich in einem view das form darstellen und dann auch auswerten?
(so wie bei dem bsp login form (mit action=".", aber wie sieht die Idee in django aus?)

mfg