第三方调用匿名请求获取任务

分配给匿名用户角色的 API 不需要登录就可以访问,其它 API 需要登录后才能访问

系统提供使用用户名就能登录的 API,参考《登录平台》中的使用 token 登录,注意不要滥用

在一个匿名访问的请求中,实现登录,然后调用获取任务 API,即可实现匿名请求获取任务,步骤如下

  • 添加服务请求,分配给匿名用户角色
  • 在服务请求中,使用用户名登录,用户名可以是传入的参数,也可以使用一个固定的用户名
  • 登录后获取到 user_session 放到 Cookie 中,在调用获取任务的 API 时作为请求头
  • 获取任务调用的是工作流提供的 /wf/biz/task/queryByOrg,API 的具体说明参考《任务 API

匿名请求的示例代码如下:

public String thirdGetTask(String username) throws Exception {
    String credentialToken = ContextUtil.getEnv("CREDENTIAL_TOKEN");  
    String token = ServiceUtil.post(SpringWebUtil.getRequest(), "entry", "/uaa/sso/token?username=1001&credentialToken=" + credentialToken, null, String.class);  
    String session = AuthUtil.tokenLogin(ServiceUtil.getServiceUrl("entry"), token);//调用登录返回的 user_session 的值

    String user_session = "";
    if (StringUtils.isNotEmpty(session)) { 
        user_session = "user_session=" + session;
    } else {
        throw new BaseRuntimeException("001", HttpStatus.UNAUTHORIZED.value(), "用户1001登录失败", null);
    }  
    HttpServletRequest request = SpringWebUtil.getRequest();
    Map<String, String> headers = ServiceUtil.getExtHeaders(request);
    headers.put("Cookie",user_session);

    String serviceUrl = "http://"+RequestUtil.getServiceGatewayHostname()+"/wf/biz/task/queryByOrg";//http 请求的具体服务的 url

    //通过参数设置查询某人最近20条待办任务
    Map<String, String> params = new HashMap();
    params.put("distinct", "true"); 
    params.put("limit","20");
    params.put("orderBy","sCreateTime DESC");
    params.put("status","waiting");
    params.put("org",username);

    JSONArray array = ServiceUtil.get(serviceUrl, params, headers, JSONArray.class);//返回的是 json 数组
    return array.toString();
}

请求所在的应用发布后,打开“企业门户-系统管理-权限管理-应用资源管理”,把请求分给匿名用户角色

如请求的访问路径是 /main/fuwu/thirdgettask,就可以直接用“门户域名/应用服务名/main/fuwu/thirdgettask?username=”获取任务数据

results matching ""

    No results matching ""