电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

开发不需要登录s-HR就可以调用的接口

来源:金蝶云社区作者:金蝶2024-09-167

开发不需要登录s-HR就可以调用的接口

s-HR中的大部分接口都是需要先单点登录,登录成功之后才可以。那么如何开发不需要登录就可以调用的接口呢?


目前了解的方案有两个,第一种:自定义servlet;第二种:自定义controller。下面就介绍这两种

一、自定义servlet

①、新建servlet类

package com.kingdee.shr.test.web.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CloudTestServlet extends HttpServlet {        
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      System.out.println("cloudtestServlet do get;");
      doPost(req, resp);
    } 
          
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      System.out.println("cloudtestServlet do post;");
    }
}

此处对于自定义的servlet全路径是没有要求的。

②、导出jar包并部署

导出jar包的步骤这里不描述。
将导出的jar放在{SHR-HOME}\eas\server\lib\sp\目录下即可。

③、 在web.xml中配置servlet

  • 这里需要说明一下,由于在服务器上有许多个web.xml,配置在不同路径下web.xml会影响后续ssoParameter.properties文件的修改已经接口访问的地址。此处只讲解与s-HR相关的。

  • 找到{EAS-HOME}\eas\server\deploy\easweb.ear\shr_web.war\WEB-INF\web.xml,添加自定义的servlet配置,记住这里配置的url-pattern,因为这是接口访问的路径

<!-- webApi servlet-->
   <servlet>
      <servlet-name>API ACCESS</servlet-name>
      <servlet-class>com.kingdee.shr.test.web.controller.CloudTestServlet</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>API ACCESS</servlet-name>
      <url-pattern>/api/cloudTest</url-pattern>
   </servlet-mapping>

④、 在ssoParameter.properties中配置path

  • 找到{EAS-HOME}\eas\server\deploy\easweb.ear\shr_web.war\WEB-INF\sso\ssoParamemter.properties,在cas.client.UrlPattern的值后面加上第三步的url-pattern值,以英文分号隔开。

cas.client.UrlPattern={$假设这里是原本就有的值};/api/cloudTest

⑤、 修改apusic的web.xml配置

找到{EAS-HOME}\apusic\domains\server(1-n)\config\web.xml,注意以下配置是所有实例都需要修改。

  • 搜索param-name为allow_URLS(如果搜不到就搜allow),修改这里的param-value,以英文逗号隔开。

<init-param>
   <param-name>allow_URLS</param-name>
   <param-value>{$假设这里是原本就有的值},/shr/api/cloudTest</param-value>
</init-param>
  • 搜索“enableCSRFCheck_POST”,将true改成false

<init-param>
   <param-name>enableCSRFCheck_POST</param-name>
   <param-value>false</param-value>
</init-param>
  • 搜索“serverNameWhiteList”

<init-param>
   <!-- CSRF WHITE LIST,SPLIT BY , -->
   <param-name>serverNameWhiteList</param-name>
   <param-value>在原有值的基础上 + 英文逗号 + 第三方系统域名或者IP</param-value>
</init-param>
  • 请特别注意,这里添加的值为/shr/api/cloudTest,在path的前面多了/shr。

⑥、重启服务,大功告成

重启完成之后,自定义接口的访问地址为

http://127.0.0.1:6888/shr/api/cloudTest

二、自定义controller

自定义controller与自定义servlet有几大步骤是一样的

①、新建controller类

  • 注意这里对新建controller类的全路径是有要求的,可以通过查看{EAS-HOME}\eas\server\deploy\easweb.ear\shr_web.war\WEB-INF\properties\applicationContext.xml配置文件找到,扫描的被注解@controller标注的类的路径。我这边查到的是如下

<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.kingdee" use-default-filters="false">
  <!--context:include-filter type="regex" expression="com.kingdee.bos.webframework.*Controller"/-->
  <!--context:include-filter type="regex" expression="com.kingdee.bos.webframework.component.*"/-->
  <context:include-filter type="regex" expression="com.kingdee.eas.hr.*.web.*.*Controller"/>
  <context:include-filter type="regex" expression="com.kingdee.shr.*.web.*.*Controller"/>
<!--<context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.select.SelectController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.autoComplete.AutoCompleteController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.grid.controller.PersonController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.grid.controller.InvController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.validator.validatorController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.IndexController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.f7.grid.GridController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.f7.quick.QuickController"/>
  <context:include-filter type="regex" expression="com.kingdee.bos.wafctrl.demo.tree.TreeController"/>
  <co

开发不需要登录s-HR就可以调用的接口

s-HR中的大部分接口都是需要先单点登录,登录成功之后才可以。那么如何开发不需要登录就可以调用的接口呢?目前了解的方案有两个,第一种:...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信