1.自定义拦截器
package com.cxf.interceptor; import java.util.List; import javax.xml.soap.SOAPException; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.headers.Header; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.apache.log4j.Logger; import org.w3c.dom.Element; import org.w3c.dom.NodeList; //AbstractPhaseInterceptor可以指定拦截器在那个阶段起作用 public class UserInterceptor extends AbstractPhaseInterceptor<SoapMessage> { Logger logger=Logger.getLogger(UserInterceptor.class); //显示调用父类的有参数的构造器就不会在隐示调用父类无参构造器 public UserInterceptor() { super(Phase.PRE_INVOKE);//在调用之前拦截soap消息 } @Override//message就是被拦截到的消息 public void handleMessage(SoapMessage msg) throws Fault { //获取所有的头元素 List<Header> headers=msg.getHeaders(); if(headers==null || headers.size()==0){ throw new Fault(new SOAPException("缺少Head 元素")); } //获取第一个头元素(w3c.dom.Element) Header firstHead= headers.get(0); Element element= (Element) firstHead.getObject(); NodeList nameList= element.getElementsByTagName("userName"); NodeList passWordList= element.getElementsByTagName("passWord"); if(nameList.getLength()!=1 || passWordList.getLength()!=1){ throw new Fault(new SOAPException("用户名密码格式有问题")); } // 获取用户名密码 String userName=nameList.item(0).getTextContent(); String passWord=passWordList.item(0).getTextContent(); logger.info(userName+":"+passWord); if(! userName.equals("rain") || ! passWord.equals("rain")) throw new Fault(new IllegalArgumentException("用户名密错误")); } }
2.Web.Xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <!-- Spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/context/*.xml</param-value> </context-param> <!-- Spring监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- CXFServlet 的访问地址--> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/WebService/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- Service --> <bean id="UserServiceImpl" class="com.cxf.service.impl.UserServiceImp"></bean> <!-- WebService --> <bean id="UserServiceWs" class="com.cxf.ws.impl.UserServiceWs"> <property name="userService" ref="UserServiceImpl"></property> </bean> <!-- 拦截器 --> <bean id="userInterceptor" class="com.cxf.interceptor.UserInterceptor"/> <!-- 发布的地址,实现的接口,实现类 ,拦截器--> <jaxws:server id="userManager" address="/userManager" serviceClass="com.cxf.ws.IUserServiceWs" > <jaxws:serviceBean> <ref bean="UserServiceWs"/> </jaxws:serviceBean> <jaxws:inInterceptors> <ref bean="userInterceptor"/> </jaxws:inInterceptors> </jaxws:server> </beans>
相关推荐
13.为CXF与Spring整合发布WebService添加拦截器进行权限控制
CXF3.0 Spring3.2 自定义拦截器
NULL 博文链接:https://wcp88888888.iteye.com/blog/1392420
完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验
Apache Cxf WebService整合Spring 处理Map、非javabean式的复合类等CXF无法自动转化的类型 CXF为服务器端和客户端添加自定义拦截器进行权限检查验证并且控制台打印日志
WebService小白学习 之 Spring整合CXF,添加拦截器。 博客学习地址:https://blog.csdn.net/qq_37902949/article/details/81262826
webservice 纯jdk,cxf整合,cxf+spring整合 ,cxf+ajax整合 cxf拦截器等,所有依赖的jar包都在lib中
webservice 纯jdk,cxf整合,cxf+spring整合 ,cxf+ajax整合 cxf拦截器等
这个版本是我上次传的CXF整合spring的加强版,增加了上传和下载已经拦截器的功能。如果还有不明白可以在留言里留下联系方式,大家可以一起讨论
CXF 入门实例 CXF对Interceptor拦截器的支持 传递复杂类型对象 CXF整合Spring
一、CXF WebService准备工作 二、CXF 入门示例 三、CXF对Interceptor拦截器的支持 四、CXF WebService中传递复杂类型对象 五、CXF整合Spring
CXF对Interceptor拦截器的支持 CXF WebService中传递复杂类型对象 CXF整合Spring ANT工具快速构建、部署工程
主要介绍了springBoot整合CXF并实现用户名密码校验的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
webservice整合spring的使用,服务器端和客户端均有,jar包都在客户端,服务端自行添加,同时 还有AJAX请求webservcie的demo,包括在CXF上的账户密码拦截器的使用
一、CXF WebService准备工作 二、CXF 入门示例 三、CXF对Interceptor拦截器的支持 四、CXF WebService中传递复杂类型对象 五、CXF整合Spring
这是模拟企业用户的开发,在远程调用的时候客户端必须传入密码,这里通过cxf框架 的自定义拦截器实现jax-ws,jax-rs下次在学习下。 创建springboot项目: 导入起步依赖以及junit pom文件如下: org.spring...
动态sql-关联查询.myBatis整合spring,逆向工程 14-SpringMVC(学习2天) SpringMvc_day01.spring入门-springMVC三大核心器(视图解析器,处理器映射器and适配器).springMvc整合myBatis SpringMvc_day02高级参数....
在web.xml配置拦截器 在Shiro配置文件上配置在web.xml对应的bean 配置安全管理器 配置自定义的realm Shiro过滤器 anon:例子/admins/**=anon 没有参数,表示可以匿名使用。 authc:例如/admins/...
系统的安全管理由Spring Security 3提供配置及管理,非常容易与第三方的用户或认证平台进行整合,如与CAS服务器作统一认证,只需要加上新的配置模块即可实现,不影响系统现有的功能模块。大大满足了各种不同系统的...