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:
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