?? authenticationhandler.java
字號:
package anni.handler;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.i18n.Messages;
import org.apache.axis.security.AuthenticatedUser;
import org.apache.axis.security.SecurityProvider;
import org.apache.axis.security.simple.SimpleSecurityProvider;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
//此handler的目的是對用戶認證,只有認證的用戶才能訪問目標服務。
public class AuthenticationHandler extends BasicHandler {
Log log = LogFactory.getLog(AuthenticationHandler.class);
String securityProvider = "securityProvider";
String unauthenticated = "unauthenticated";
String authenticatedUser = "authenticatedUser";
String cantAuth = "cantAuth";
public void invoke(MessageContext msgContext) throws AxisFault {
log.info("AuthenticationHandler : invoke : start");
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,表示沒有通過認證,
log.info(userId + ", " + password);
//拋出Server.Unauthenticated異常。
AuthenticatedUser authUser = provider.authenticate(msgContext);
if(authUser == null)
throw new AxisFault(unauthenticated,
"error", null, null);
//用戶通過認證,把用戶的設置成認證了的用戶。
msgContext.setProperty(authenticatedUser, authUser);
}
log.info("AuthenticationHandler : invoke : end");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -