django sessions ohne (request)

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
d3f3nd3r
User
Beiträge: 40
Registriert: Montag 19. November 2007, 20:17

Montag 28. Januar 2008, 20:40

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
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Januar 2008, 12:04

Der normale Weg dürfte sein, das request Objekt an deine Funktion zu übergeben und fertig. Warum willst du das nicht tun?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
d3f3nd3r
User
Beiträge: 40
Registriert: Montag 19. November 2007, 20:17

Mittwoch 30. Januar 2008, 13:57

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
Zuletzt geändert von d3f3nd3r am Mittwoch 30. Januar 2008, 13:58, insgesamt 1-mal geändert.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Januar 2008, 13:58

verstehe ich jetzt nicht...

Meinst du sowas:

Code: Alles auswählen

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
d3f3nd3r
User
Beiträge: 40
Registriert: Montag 19. November 2007, 20:17

Mittwoch 30. Januar 2008, 14:05

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)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. Januar 2008, 14:07

Du kannst auch einen Dekorator um die Views bauen der checkt ob der User eingeloggt ist. Da gibts im Internet sicher schon fertiges.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Januar 2008, 14:07


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
d3f3nd3r
User
Beiträge: 40
Registriert: Montag 19. November 2007, 20:17

Mittwoch 30. Januar 2008, 14:12

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?
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Januar 2008, 17:59

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
d3f3nd3r
User
Beiträge: 40
Registriert: Montag 19. November 2007, 20:17

Donnerstag 31. Januar 2008, 13:54

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
Antworten