2

我想禁用POSTOpenACS/AOLServer 安装的所有 s。有没有一个好的地方——一个请求钩子或包装器/中间件——来做到这一点?

(如果拦截可以让一些 URI 模式或登录用户通过,则奖励积分。)

4

1 回答 1

6

是的,这很简单。您可以在这里选择:您可以注册一个 proc 来运行而不是所有 POST,或者您可以注册一个过滤器以在 POST 之前运行并过滤掉某些用户或其他什么。我认为过滤器是更好的选择。

为此,您可以使用ns_register_procns_register_filter(使用 preauth)注册您的 proc 或过滤器。将以下代码放在 OpenACS 包的 tcl 文件夹下或 AOLserver /web/servername/tcl 主目录下的 .tcl 文件中。

过滤器示例:

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 } {
      #this user isn't allowed - so redirect them
      ns_returnredirect "/register/"
      # tell AOLserver to abort this thread
      return filter_return
    } else {
      # this user is allowed, tell AOLserver to continue
      return filter_ok
    }
}

过程示例:

 ns_register_proc POST / handle_posts
    proc handle_posts {} {
        ns_returnredirect "http://someotherwebsite.com"
    }
于 2013-12-08T23:29:28.220 回答