Seite 1 von 1
User Namen abfragen
Verfasst: Mittwoch 26. Juli 2006, 20:52
von mike
Hallo zusammen,
ich möchte in Zope den Usernamen abfragen, und habe mit Hilfe des Zope Buch`s folgendes probiert:
Code: Alles auswählen
import AuthenticatedUser
def get_User(self):
user = AuthenticatedUser.getUserName()
return user
aber es klappt nicht, diese externe Methode einzubinden, weil AuthenticatedUser nicht gefunden wird,
auch andere Module aus dem Anhang der Doku kann ich nicht verwenden,
woran liegt das denn?

Re: User Namen abfragen
Verfasst: Mittwoch 26. Juli 2006, 22:12
von gerold
mike hat geschrieben:ich möchte in Zope den Usernamen abfragen
Hi mike!
In einem "Python Script" geht das z.B. so:
Siehe auch:
http://www.python-forum.de/post-39107.html#39107
mfg
Gerold

Verfasst: Mittwoch 26. Juli 2006, 22:27
von gerold
Um zum Benutzernamen innerhalb einer "Externe Methode" zu kommen...
Code: Alles auswählen
def get_username(self):
return self.REQUEST.AUTHENTICATED_USER
mfg
Gerold

Verfasst: Mittwoch 26. Juli 2006, 23:08
von mike
hallo Gerold,
danke für die Hilfe, es hat geklappt den Usernamen auszulesen,
jetzt habe ich aber schon ein neues Problem, und zwar wenn ich den Usernamen an eine Variable übergebe und diese dann an meinen webservice schicke, dann bekomme ich einen Fehler, mit dem ich nicht viel anfangen kann:
Error Type: faultType
Error Value: ('soapenv:Server.userException', "org.xml.sax.SAXException: Deserializing parameter 'v1': could not find deserializer for type {
http://www.w3.org/1999/XMLSchema}Implic ... rerWrapper", '')
wenn ich den Usernamen direkt als string in die Abfrage schreibe, dann funktioniert es...
Verfasst: Donnerstag 27. Juli 2006, 08:02
von gerold
Hi mike!
Ich habe keine Erfahrung mit Soap, aber vielleicht hilft es schon, beim Zuweisen des Variablenamens, den Wert explizit noch mit str() oder unicode() umzuwandeln. Es könnte ja sein, dass kein String, sondern stringähnliches Objekt zurück gegeben wird.
mfg
Gerold

Verfasst: Donnerstag 27. Juli 2006, 10:09
von mike
Hallo Gerold,
vielen Dank, daran hat`s gelegen...

Verfasst: Dienstag 1. August 2006, 16:45
von mike
Hallo nochmal,
gibt es zufällig auch eine Möglichkeit das Passwort abzufragen?
Verfasst: Mittwoch 9. August 2006, 10:55
von nicogrubert
Noch ein kurzer Nachtrag:
Falls dir das REQUEST Objekt - aus welchen Gründen auch immer - nicht zur Verfügung stehen sollte, bekommt man den User wie folgt:
Code: Alles auswählen
# Script (Python)
from AccessControl import getSecurityManager
userobj = getSecurityManager().getUser()
return userobj.getUserName()
Das Passwort ist in einem speziellen Attribut "__" (2 Underscores) gespeichert.
Attribute und Methode, die mit einem "_" beginnen, sind besonders geschützt und darauf kannst du in einem Python Script nicht zugreifen (Restricted Python).
Dazu musst du dann eine Externe Methode verwenden, die in etwa folgendes macht (Ungetestet):
Code: Alles auswählen
# External Method
from AccessControl import getSecurityManager
userobj = getSecurityManager().getUser()
return userobj.__ # unschön
oder besser:
Ansonsten einfach mal die API der User Klasse anschauen (<Zope_SoftwareHome>\lib\python\AccessControl\User.py).
Verfasst: Mittwoch 6. September 2006, 10:02
von JR
Hallo!
Um an Mikes Frage zur Ermittlung des Passworts anzuknüpfen:
Vorgeplänkel:
----------------
Für unseren Flugverein verwalte ich den internen Bereich unserer Homepage (Plone-Portal).
Innerhalb dieses Portals läuft eine selbsterstellte Flugplatz-Verwaltungssoftware.
Die Daten (Flüge etc.) werden in einer MySQL-Datenbank verwaltet.
Nun habe ich vor, parallel eine Python-Applikation zu programmieren, um die Flugdatenerfassung
direkt im Flugbetrieb über ein Tool zu ermöglichen, welches schnellere Antwortzeiten als
ein lokal betriebener Server (Kopie des Portals) bietet. Dieses Tool soll über diesselben Zugangsdaten
wie im Portal geschützt werden.
Frage:
-------
Gibt es eine Möglichkeit an die Passwörter von den registrierten Benutzern im Portal zu kommen,
um diese zu allen Mitgliedern in der MySQL-Tabelle zu speichern?
Nachgeplänkel:
-----------------
Beim Registrieren neuer Benutzer speichere ich die Benutzernamen in der MySQL-DB. Hätte ich jetzt
entsprechend eine Passwort-Spalte, könnte ich den Benutzerzugang in der Python-Applikation
leichter realisieren.
Vielen Dank fürs "Zuhören"
JR