阿翔编程学-Axis用户过滤服务类程序

来源:互联网 发布:esp8266 wifi网络干扰 编辑:程序博客网 时间:2024/05/23 14:06

Axis用户过滤服务类程序

//===========================================================
//用户过滤服务类程序 author:曹翔
//===========================================================

package com.ruix.service;

import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.security.SecurityProvider;
import org.apache.axis.security.simple.SimpleSecurityProvider;
import org.apache.axis.utils.Messages;

/**
 * 用户过滤类
 * @author caoxiang
 * @version 1.0
 */
public class AuthenticationHandler extends BasicHandler {
 
 //序列号
 private static final long serialVersionUID = 1L;

   /**
  * invoke,每一个handler都必须实现的方法。
  * @param msgContext
 */
 public void invoke(MessageContext msgContext) throws AxisFault {
  SecurityProvider provider = (SecurityProvider) msgContext
    .getProperty("securityProvider");
  if (provider == null) {
   provider = new SimpleSecurityProvider();
   msgContext.setProperty("securityProvider", provider);
  }
  if (provider != null) {
   String userId = msgContext.getUsername();  //用户名
   String password = msgContext.getPassword();//密 码
   // 对用户进行认证,如果authUser==null,表示没有通过认证,抛出Server.Unauthenticated异常。
   org.apache.axis.security.AuthenticatedUser authUser = provider
     .authenticate(msgContext);
   if (authUser == null)
    throw new AxisFault("Server.Unauthenticated", Messages
      .getMessage("cantAuth01", userId), null, null);
   // 用户通过认证,把用户的设置成认证了的用户。
   msgContext.setProperty("authenticatedUser", authUser);
  }
 }
 
}