服务端handler.java

package com.ws01;import java.util.Set;import javax.xml.namespace.QName;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import javax.xml.ws.soap.SOAPFaultException;import org.w3c.dom.Node;public class ServiceSoapHandler implements SOAPHandler<SOAPMessageContext> {/*** 校验用户名密码、校验是否有权限执行方法*/@Overridepublic boolean handleMessage(SOAPMessageContext context) {Boolean out = (Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);if(!out){SOAPMessage message = context.getMessage();try {SOAPHeader header = message.getSOAPPart().getEnvelope().getHeader();SOAPBody body = message.getSOAPPart().getEnvelope().getBody();//如果头信息为空或者没有内容,直接抛出异常if(null==header || header.getChildNodes().getLength()==0){SOAPFault fault = body.addFault();fault.setFaultString("头信息不能为空!");throw new SOAPFaultException(fault);}//校验用户名和密码Node node = header.getElementsByTagName("lic:userpassword").item(0);String password = node.getTextContent();System.out.println("client send password:"+password);if(!"123456".equals(password)) {return false;}//校验是否有执行方法的权限Node bd = body.getFirstChild();String methodName = bd.getLocalName();//调用的方法名
                System.out.println(methodName);//这个方法不允许该用户调用if("adminLogin".equals(methodName)){return false;}} catch (SOAPException e) {e.printStackTrace();}}return true;}@Overridepublic Set<QName> getHeaders() {// TODO Auto-generated method stubreturn null;}@Overridepublic void close(MessageContext context) {// TODO Auto-generated method stub
        }@Overridepublic boolean handleFault(SOAPMessageContext context) {// TODO Auto-generated method stubreturn false;}
}

转载于:https://www.cnblogs.com/yangzhilong/p/3365779.html

webservice系统学习笔记8-简单的权限校验相关推荐

  1. webservice系统学习笔记9-使用契约优先的方式的一个服务端demo(隐式传Header信息)...

    服务器端: 1.编写wsdl文件 <?xml version="1.0" encoding="UTF-8" standalone="no&quo ...

  2. django系统学习笔记

    转自:http://hi.baidu.com/derris/item/7ca6013e330563fede2221ab 2010-02-07 00:12 django系统学习笔记--(1)hello ...

  3. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  4. React系统学习笔记

    ***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...

  5. Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 参数验证 参数验证功能是基于JSR303实现的,用户只需标识JSR303标准的验证 ...

  6. Dubbo -- 系统学习 笔记 -- 示例 -- 服务分组

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 服务分组 当一个接口有多种实现时,可以用group区分. <dubbo:se ...

  7. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  8. Dubbo -- 系统学习 笔记 -- 示例 -- 只订阅

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 只订阅 问题 为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如 ...

  9. 【六更完结!由于字数限制开新文章继续】零基础信号与系统学习笔记:复指数信号、傅里叶级数的系数推导、三角函数正交性、离散傅里叶变换、相位补偿、z变换表、逆变换表、常见序列及其作用

    零基础信号与系统学习笔记:复指数信号.傅里叶变换.三角函数正交性 基础1:复指数信号 复指数信号基础知识 复指数信号推导1 虚指数信号 虚指数信号特性和作用 直流信号 基础2:傅里叶级数 推导傅里叶级 ...

最新文章

  1. 在java中开发图形用户_2016年计算机二级考试《JAVA》习题:编写图形用户界面
  2. Windows 2000/NT/XP管理员密码丢失解决方法
  3. static成员函数不能调用non-static成员函数
  4. 关于java中多态的理解,涉及到内存空间
  5. VTK:可视化之VectorField
  6. 设计模式之禅读书笔记
  7. 利用Facebook提供的免费工具进行宣传
  8. 马云在《赢在中国》对创业者的经典点评
  9. 四川方言说唱《管我锤子事》
  10. java中的递归算法_java递归算法
  11. aspen怎么做灵敏度分析_灵敏度分析_aspen
  12. php图书馆占座系统代码,PHP图书馆管理系统(源码+数据库脚本+截图)
  13. 生活是艰难的,我又划着我的断桨出发了
  14. 工具-4:图片识别和音乐在线识别
  15. PaddleNLP_基于seq2seq的对联生成
  16. NOIP训练 czy的后宫5(树形dp)
  17. 六顶思考帽(edward de bono)
  18. 2021年11月软考网络规划设计师上午真题及答案解析
  19. 支付宝登录界面size_class
  20. 三个方案解决短视频APP广告变现问题

热门文章

  1. windows下运行nacos
  2. echarts多次使用SetOption时的数据问题
  3. Jupyter notebook基础教程(启动,汉化,操作)
  4. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(2)签到题5题
  5. 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法
  6. 【POJ2887】Big String(块状链表,模板)
  7. mysql+分页脚本_MySql实现分页查询的SQL
  8. 第五章节 类的继承(访问修饰符)
  9. Python入门--列表生成式
  10. vim怎么配置只有打开特定文件高亮_vimrc里各种配置的含义