2 Stimmen

Gibt es einen geeigneten Hook zum Abfangen aller POST-Anfragen für ein OpenACS/AOLServer-System?

Ich möchte alle POST-Anfragen an einer OpenACS/AOLServer-Installation deaktivieren. Gibt es einen guten zentralen Ort - einen Request-Hook oder ein Wrapper/Middleware -, um dies zu tun?

(Bonuspunkte, wenn der Interceptor einige URI-Muster oder eingeloggte Benutzer durchlassen kann.)

6voto

TrojanName Punkte 4389

Ja, das ist ganz einfach zu tun. Du hast hier die Wahl: Du kannst ein Proc registrieren, das anstelle aller POSTs ausgeführt wird, oder du kannst einen Filter registrieren, der vor dem POST ausgeführt wird und bestimmte Benutzer filtert. Ich glaube, der Filter ist die bessere Wahl.

Um dies zu tun, registrierst du dein Proc oder Filter mit ns_register_proc oder ns_register_filter (mit Preauth). Füge den folgenden Code in eine .tcl-Datei im tcl-Ordner eines OpenACS-Pakets oder im Hauptverzeichnis des AOLservers /web/servername/tcl ein.

Filterbeispiel:

ns_register_filter preauth POST / filter_posts
proc filter_posts {} {
    set user_id [ad_verify_and_get_user_id]
    set list_of_allowed_user_ids [21 567 8999] 
    if {[lsearch -exact $list_of_allowed_user_ids $user_id] == -1 } {
      # Dieser Benutzer ist nicht zugelassen - also leite ihn um
      ns_returnredirect "/register/"
      # Sag AOLserver, dass er diesen Thread abbrechen soll
      return filter_return
    } else {
      # Dieser Benutzer ist zugelassen, sag AOLserver, dass er fortsetzen soll
      return filter_ok
    }
}

Procbeispiel:

ns_register_proc POST / handle_posts
proc handle_posts {} {
    ns_returnredirect "http://someotherwebsite.com"
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X