构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证
2020-12-13 03:03
标签:cxf web services webservice CXF中的拦截器分为in拦截器和out拦截器,又有客户端拦截器和服务端拦截器。 拦截器使用流程:客户端(out)-> 服务端(in)->处理业务->服务端(out)->客户端(in),并不是每一步都需要拦截器。在这里我们用到的是客户端Out拦截器和服务端in拦截器。服务端in拦截器检查用户级权限,客户端out浏览器发送用户信息给服务端。 1、创建服务端验证 JaxWsServerFactoryBean或Endpoint都可以通过getInInterceptors方法,向WebService服务添加拦截器。 1.1 Endpoint方式
类描述:用户权限验证拦截器 修改人:王成委 修改时间:2014-5-10 下午03:16:16 2、客户端发送用户信息 客户端则需要添加out拦截器,在out拦截器中加入消息头 客户端拦截器:ClienLoginInterceptor 类描述: 修改记录 ---------------- 修改人:王成委 修改时间:2014-5-10 下午03:58:10 修改备注: 构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证,搜素材,soscw.com 构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证 标签:cxf web services webservice 原文地址:http://blog.csdn.net/jaune161/article/details/25602655 HelloWorldService service = new HelloWorldServiceImpl();
String address = "http://localhost:8080/hello";
EndpointImpl endpoint = (EndpointImpl)Endpoint.publish(address, service);
endpoint.getInInterceptors().add(new AuthInterceptor());
1.2 JaxWsServerFactoryBean方式
HelloWorldServiceImpl impl = new HelloWorldServiceImpl();
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setAddress("http://localhost:8080/hello");
factory.setServiceClass(HelloWorldService.class);
factory.setServiceBean(impl);
factory.getInInterceptors().add(new AuthInterceptor());
factory.create();
自定义拦截去需要实现PhaseInterceptor接口,不过一般都是继承自AbstractPhaseInterceptorpackage com.tiamaes.webservice.auth;
import java.util.List;
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.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
*
package com.tiamaes.webservice.auth;
import java.util.List;
import javax.xml.namespace.QName;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
*
客户端添加ClientLoginInterceptor
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://127.0.0.1:8080/hello?wsdl");
client.getOutInterceptors().add(new ClientLoginInterceptor("admin", "admin"));
try {
Object[] objs = client.invoke("syaHello", "Tom");
System.out.println(objs[0].toString());
} catch (Exception e) {
e.printStackTrace();
}
}
上一篇:R语言中实现层次聚类模型
文章标题:构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证
文章链接:http://soscw.com/essay/26806.html