我想禁用所有POST到OpenACS/AOLServer安装。是否有一个好的单一位置-一个请求-钩子或包装/中间件-来做这件事?
(如果拦截可以让几个URI模式或登录用户通过,则额外积分。)
发布于 2013-12-08 23:29:28
是的,这是直接做的。您可以在这里选择:您可以注册一个proc来运行,而不是所有的帖子,或者您可以注册一个过滤器在文章之前运行,然后过滤掉某些用户或其他什么。我觉得过滤器是个更好的选择。
要做到这一点,您可以使用流程或过滤器 (使用preauth)注册proc或过滤器。将以下代码放入.tcl文件中,放在OpenACS包的tcl文件夹下或AOLserver /web/servername/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
}
}Proc示例:
ns_register_proc POST / handle_posts
proc handle_posts {} {
ns_returnredirect "http://someotherwebsite.com"
}https://stackoverflow.com/questions/20460292
复制相似问题