开发不需要登录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就可以调用的接口
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



