web service 权限控制以及cxf拦截器

web service权限控制

  • 正常的思路是,让服务器端规定,input消息(客户端发来的消息)一定要携带某种特殊的数据,例如,用户名,密码。服务端根据对这些数据的判断来进行权限控制。做法是,控制用户发来的xml文档片段里的信息来判断。
  • 现在用到了cxf框架,这个方法被阻断了,因为,cxf自己生成相应的xml文档片段,没有让我们手动生成。但是它提供了一个叫拦截器的东西

添加拦截器

1.首先获取endpoint.publish返回值,EndpointImpl,org.apache.cxf.jaxws.EndpointImpl,右边需要强转一下。
2.调用该对象的,getInterceptor和getOuterceptor 方法。获得服务端的in,out拦截器所属列表。接着自定义拦截器并添加进去。
3.定义拦截器,实现Interceptor接口。通常继承AbstractPhaseInterceptor这个抽象类。或者使用系统实现好的拦截器LoggingInInterceptor 和LoggingOutInterceptor,构造函数的参数代表log输出的位置。还会有其他拦截器,这里暂时不举例。

因为添加拦截器并没有更改web service,就是接口和实现类,以及发布地址。所以不必重新加载客户端。

从logging拦截器打印出来的信息我们可以看出,xml片段的一些信息。

  • envelope

    –header:不是强制出现的,是由程序员控制添加的,主要用于携带一些额外的信息,比如用户名,密码等信息。

    –body:下面有两个内容,如果调用正确,里面的内容应该是遵守wsdl的;如果调用失败,是fault子元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值