自定义拦截器,验证用户名密码

来源:互联网 发布:js计算商品总金额 编辑:程序博客网 时间:2024/06/03 07:46
一、client端

     1、定义一个构造方法:
     
     public AddHeaderInterceptor(String userId, String password){
          super(Phase.PREPARE_SEND);
          this.userId = userId;
          this.password = password;
     }

     2、重写handleMessage

     public void handleMessage(SoapMessage msg) throws Fault {
          List<Header> headers = msg.getHeaders();
          
          Document document = DOMUtils. createDocument();
          Element element = document.createElement("root" );
          
          Element userElement = document.createElement("userName" );
          Element passwordElement = document.createElement("password" );
          
          userElement.setTextContent( userName);
          passwordElement.setTextContent( password);
          
          element.appendChild(userElement);
          element.appendChild(passwordElement);
          
          headers.add( new SoapHeader(new QName("authority" ), element));
     }

     xml为:

     <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
     <soap:Header>
          <root>
               <userName>songchengye</userName>
               <password>123456</password>
          </root>
     </soap:Header>

     <soap:Body>
          <ns2:getMyName xmlns:ns2="http://service.ws.polo.song.com/">
               <arg0>songchengye</arg0>
          </ns2:getMyName>
     </soap:Body>

     </soap:Envelope>

     3、服务器端handleMessage

    public void handleMessage(SoapMessage message) throws Fault {
         List<Header> headers = message.getHeaders();
          if(null ==headers || headers.isEmpty()){
              throw new Fault(new IllegalArgumentException("header is empty." ));
         }
         Header header = headers.get(0);
         Element element = (Element) header.getObject();
         
         NodeList userIds = element.getElementsByTagName("userName" );
         NodeList passwords = element.getElementsByTagName("password" );
         
     if(null == userIds || null == passwords || userIds.getLength() < 1 || passwords.getLength() < 1)     {
              throw new Fault(new IllegalArgumentException("用户名、密码格式不对." ));
         }
         
         String username = userIds.item(0).getTextContent();
         String password = passwords.item(0).getTextContent();
         
          if(null != username && username.equals("songchengye" )
                 && null != password && password.equals("123456" )){
              return;
         } else {
              throw new Fault(new IllegalArgumentException("用户名或密码错误." ));
         }
    }


0 0
原创粉丝点击