# filter.action

当系统接收到http请求时(不包括产品部署包中的静态资源请求,如图片、js、css等)都会执行此钩子脚本中的函数,脚本可以拦截http请求并返回个性化的内容。

  1. 此钩子脚本全局唯一,在sysdata项目中,位于/sysdata/settings/hooks/filter.action
  2. 可以直接编辑filter.action文件,也可以在SuccIDE或元数据项目设置中通过脚本编辑器直接编辑 ts语法的脚本文件filter.action.ts,编辑器会自动编译并生成filter.action

WARNING

此脚本会影响系统所有非静态资源网络请求,脚本开发过程中疏忽不小心写错了可能导致系统无法访问!

补救措施:

  1. 添加系统启动变量-Dsucc.disableScript.filter=true,然后重启,见环境变量
  2. 系统对当前当前正在编辑脚本的用户不会立即启用脚本(只有重新登录才会生效),所以他还可以继续编辑脚本,尽快把脚本改正确。在脚本修改正确之前不要退出浏览器、不要注销。

# 脚本模版

实现下面的脚本函数:

/**
 * 当系统接收到任意web请求时都会执行此钩子脚本中的函数,脚本可以拦截Web请求并返回个性化的内容。
 * 
 * 此钩子脚本全局唯一,在`sysdata`项目中,位于`/sysdata/settings/hooks/filter.action`。
 * 你可以直接编辑`filter.action`文件,也可以在SuccADP-IDE或元数据项目设置中通过脚本编辑器直接编辑
 * ts语法的脚本文件`filter.action.ts`,编辑器会自动编译并生成`filter.action`。
 * 
 * WARNING!!! 此脚本会影响系统所有网络请求,脚本开发过程中疏忽不小心写错了可能导致系统无法访问!
 * 
 * 补救措施:
 * 
 * 1. 添加系统启动变量-Dsucc.disableScript.filter=true,然后重启,见环境变量。
 * 2. 系统对当前当前正在编辑脚本的用户不会立即启用脚本(只有重新登录才会生效),所以他还可以继续编辑脚
 * 	本,尽快把脚本改正确。在脚本修改正确之前不要退出浏览器、不要注销。
 *
 * @see <https://docs.succbi.com/dev/hooks/filter-action>
 * @see <https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Filter.html>
 */

/**
 * 请求任何资源时都会执行此过滤器。
 * 
 * 说明:
 * 1、本扩展点执行的非常频繁,所有http请求都会调用本方法,所以脚本务必要高效
 * 2、如果脚本想重定向请求到另外的页面,可以调用`response.sendRedirect("/xxx")`跳转,然后return false。
 *
 * @returns 返回`false`将不处理`FilterChain`上的下一个Filter
 */
function onFilter(request: HttpServletRequest, response: HttpServletResponse): boolean | void {

}
是否有帮助?
0条评论
评论