Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
themeEclipse
firstline1
titleHttpHandler.java
linenumberstrue
package com.fr.decision.fun;

import com.fr.third.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by loy on 2018/9/3.
 *
 * HTTP路由处理器
 */
public interface HttpHandler {

    /**
     * HTTP方法
     * @return 返回null时匹配所有方法
     */
    RequestMethod getMethod();

    /**
     * 路由路径
     * 例如:
     *     /
     *     /foo
     *     /aaa/bbb
     */
    String getPath();

    /**
     * 是否为公开路由(不需要登录就能访问)
     */
    boolean isPublic();

    /**
     * 处理请求
     */
    void handle(HttpServletRequest req, HttpServletResponse res) throws Exception;

    /**
     * 是否必须超管访问, isPublic为false才生效
     */
    boolean needAdmin();

    /**
     * 管理系统鉴权,非空时则会对管理系统鉴权, 多个节点id取并,isPublic为false才生效
     *
     * @return 管理系统节点id。内置管理系统节点id见com.fanruan.api.decision.AuthorityKit.Management
     */
    String[] modules();

    /**
     * 其他鉴权手段,鉴权结果与超管鉴权,管理系统节点鉴权取并
     * @param userId 用户id
     * @return 鉴权成功与否
     */
    boolean accessControl(String userId);
}


四、支持版本

产品线

版本

支持情况

备注

FR10.0支持
BI5.1支持
BI5.1.2支持
BI5.1.3支持

五、插件注册

Code Block
languagexml
themeEclipse
firstline1
titleplugin.xml
linenumberstrue
<extra-decision>
    <HttpHandlerProvider class="your class name"/>
</extra-decision>

...

对于isPublic()返回的是false的接口,则会额外匹配needAdmin()、modules()、accessControl(String userId) 三个权限控制的接口方法,只有3个方法锁包含的权限均满足,才能通过验证(也就是3个方法是“与”的关系)

accessControl(String userId) 方法需要注意,入参是用户ID,不是用户名。基于用户名的匹配需要开发者自行根据FineKit等相关方法进行转换。

八、常用链接

demo地址:demo-http-handlerdemo-web-request

常用module值

com.fr.decision.fun.URLAliasProvider

(1)、三组开放web服务接口的插件接口对比

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。禁止用于任何商业用途,若作为商用一切后果责任由使用者自行承担。

open-JSD-8016

open-JSD-7868

open-JSD-7837

open-JSD-7660

open-JSD-7639

open-JSD-7546

open-JSD-7339免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。