2
我想將所有POST
禁用到OpenACS/AOLServer安裝。有沒有一個很好的單一的地方 - 請求掛鉤或包裝/中間件 - 要做到這一點?是否有一個合適的攔截所有POST到一個OpenACS/AOLServer系統的鉤子?
(如果加分點攔截可以讓通過幾個URI模式或登錄用戶。)
我想將所有POST
禁用到OpenACS/AOLServer安裝。有沒有一個很好的單一的地方 - 請求掛鉤或包裝/中間件 - 要做到這一點?是否有一個合適的攔截所有POST到一個OpenACS/AOLServer系統的鉤子?
(如果加分點攔截可以讓通過幾個URI模式或登錄用戶。)
是的,這是直截了當的事情。您可以在這裏選擇:您可以註冊一個proc來運行而不是所有的POST,或者您可以註冊一個過濾器在POST之前運行並過濾掉某些用戶或任何其他內容。我認爲過濾器是一個更好的選擇。
要做到這一點,請使用ns_register_proc或ns_register_filter(with preauth)註冊您的proc或過濾器。將以下代碼放入OpenACS軟件包的tcl文件夾下的.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"
}
我要補充一點,你應該只是一個或另一個,而不是兩個, – TrojanName