Announcement

Collapse
No announcement yet.

Userverwaltung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Userverwaltung

    Hallo,

    aus meiner Anwendung heraus werden User auf dem FireBird -Server registriert. Es soll aber jedem Anwender wiederum möglich sein, sein Passwort selber zu verwalten. Dies funktioniert auch soweit, da ich die Anwender in der Tabelle User mit Hilfe eines Grants berechtige Ihr Passwort zu ändern.
    Falls nun aber nummerische Anwender angelegt werden, so schlägt mein Grant fehl. Mein Grant-Befehl sieht wie folgt aus:

    Grant UPDATE (PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME) ON USERS TO 111

    Der Anwender 111 existiert auf dem Server. Wie kann man diesen User kapseln, damit das SQL-Statement wieder funktioniert?
    Fehlermeldung lautet: Token unknown line 1, char 93. 111.

    Es handelt sich dabei um den FireBird-Server 1.0.3.

    Gruß

    Andreas

  • #2
    Hallo Andreas,
    <br><br>
    ein Datebankobjektname darf mit keiner Ziffer beginnen, aber in einer Dialect 3 Datenbank kannst Du sogenannte <b>Delimited Identifiers</b> verwenden. Im Klartext bedeutet das, dass Du einen Datenbankobjektnamen mit doppelten Anführungszeichen "begrenzen" kannst, und hier sind dann auch Leerzeichen, Ziffern am Anfang erlaubt. Des weiteren wird der Datenbankobjektname dann auch Case-Sensitive. Ich würde diese Biester nur in wirklichen Notfällen verwenden, d.h. wenn es einfach nicht anders geht, aber z.B. bei einem CREATE TABLE Statement würde ich den Tabellennamen nie freiwillig unter Hochkommas setzen, weil dieser dann abhängig vom verwendeten Namen Case-Sensitive ist, und man später wiederum nur auf die Tabelle zugreifen kann, wenn man doppelte Anführungszeichen verwendet, und das kann auf Dauer ziemlich lästig werden. In deinem Fall - nochmals, in einer Dialect 3 Datenbank - sollte folgendes funktionieren:
    <pre>
    Grant UPDATE (PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME) ON USERS TO "111"
    </pre>
    Sollte 111 eine ID in Deiner Benutzertabelle sein, dann könntest Du das dadurch umgehen, dass Du einfach ein Kürzel voranstellst, das z.B. Deinen Anwendungsnamen beschreibt. Somit wärst Du dann auch in einer Dialect 1 Datenbank auf der sicheren Seite.
    <br><br>
    Zum Thema Benutzerverwaltung wäre vielleicht folgender Artikel noch interessant. http://www.volny.cz/iprenosil/interbase/ip_ib_isc4.htm
    <br><br>
    Ich hoffe das hilft Dir weiter.
    <br><br>
    Schöne Grüße,
    <br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Thomas,

      vielen Dank für die Info. Hab es realisiert und so gehts. Ich hatte bisher das Kürzel hinten an die eigentliche Kennung angehängt, die kann aber auch vorne stehen.

      Gruß

      Andrea

      Comment

      Working...
      X