webservice使用拦截器进行权限验证
2014-11-12 16:57
253 查看
我们知道webservice是实现两个系统之间的交互,服务器在接受客户端传来的请求时,必然需要去验证其是否具有权限操作。
通常呢,我们是把验证信息放在soapmessage的头信息中。
首先说客户端:
第一步:创建拦截器
public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{
private String name;
private String password;
public IntercepterTest(String name,String password) {
super(Phase.PREPARE_SEND);
this.name = name;
this.password = password;
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
//自己创建一个头信息
Document document = DOMUtils.createDocument();
Element element1 = document.createElement("userinfo");
Element element2 = document.createElement("name");
Element element3 = document.createElement("password");
element2.setTextContent(name);
element3.setTextContent(password);
element1.appendChild(element3);
element1.appendChild(element2);
Header header = new Header(new QName("tt"), element1);
//将自己创建的头信息添加到message中
message.getHeaders().add(header);
}
}
其中其构造方法中的阶段是,准备发送之前将验证信息封装在soapmessage中;
在客户端看来,将该拦截器添加到out的拦截器中;
IntercepterTest it = new IntercepterTest("admin", "123");
//=====================================添加拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.getOutInterceptors().add(it);
这样就算完成客户端,请求权限的添加操作;
接着再来看服务器端,在服务器端,我们需要在调用方法之前拦截信息并解析验证其是否具有权限;
第一步:也是创建拦截器
public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{
public IntercepterTest() {
super(Phase.PRE_INVOKE);
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
//取出头信息,并将其转化为w3c
Header header = message.getHeaders().get(0);
Element element = (Element) header.getObject();
String name = element.getElementsByTagName("name").item(0).getTextContent();
String password = element.getElementsByTagName("password").item(0).getTextContent();
System.out.println(name+"==="+password);
}
}
其次,我们将添加到in的拦截器中;
//==========================================添加拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.getInInterceptors().add(new IntercepterTest());
在得到用户名和密码时,我们就可以进行权限验证了,如果没有权限让其抛个异常处理;
通常呢,我们是把验证信息放在soapmessage的头信息中。
首先说客户端:
第一步:创建拦截器
public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{
private String name;
private String password;
public IntercepterTest(String name,String password) {
super(Phase.PREPARE_SEND);
this.name = name;
this.password = password;
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
//自己创建一个头信息
Document document = DOMUtils.createDocument();
Element element1 = document.createElement("userinfo");
Element element2 = document.createElement("name");
Element element3 = document.createElement("password");
element2.setTextContent(name);
element3.setTextContent(password);
element1.appendChild(element3);
element1.appendChild(element2);
Header header = new Header(new QName("tt"), element1);
//将自己创建的头信息添加到message中
message.getHeaders().add(header);
}
}
其中其构造方法中的阶段是,准备发送之前将验证信息封装在soapmessage中;
在客户端看来,将该拦截器添加到out的拦截器中;
IntercepterTest it = new IntercepterTest("admin", "123");
//=====================================添加拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.getOutInterceptors().add(it);
这样就算完成客户端,请求权限的添加操作;
接着再来看服务器端,在服务器端,我们需要在调用方法之前拦截信息并解析验证其是否具有权限;
第一步:也是创建拦截器
public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{
public IntercepterTest() {
super(Phase.PRE_INVOKE);
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
//取出头信息,并将其转化为w3c
Header header = message.getHeaders().get(0);
Element element = (Element) header.getObject();
String name = element.getElementsByTagName("name").item(0).getTextContent();
String password = element.getElementsByTagName("password").item(0).getTextContent();
System.out.println(name+"==="+password);
}
}
其次,我们将添加到in的拦截器中;
//==========================================添加拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.getInInterceptors().add(new IntercepterTest());
在得到用户名和密码时,我们就可以进行权限验证了,如果没有权限让其抛个异常处理;
相关文章推荐
- WebService 之CXF拦截器,使用 CXF 拦截器进行简单的 head 信息验证,适合入门选手
- 拦截器权限控制使用Struts 拦截namespace进行权限控制-java教程
- CXF为服务器端和客户端添加自定义拦截器进行权限检查验证并且控制台打印日志(4)
- JAX-WS使用Handler实现简单的WebService权限验证
- 【3】.net MVC 使用IPrincipal进行Form登录即权限验证
- 使用拦截器进行权限控制
- 使用SoapHeader对WebService进行身份验证
- Spring MVC 使用拦截器优雅地实现权限验证功能
- 使用Spring AOP来进行权限验证
- Struts2中使用拦截器进行权限控制
- Spring MVC 使用拦截器优雅地实现权限验证功能
- 使用HttpModule进行权限验证
- Android中使用Activity的权限进行启动验证
- 构建基于CXF的WebService服务(3)-- 利用拦截器实现权限验证
- CXF:为服务器端和客户端添加自定义拦截器进行权限检查验证并且控制台打印日志
- Struts2使用过滤器和拦截器进行简单权限校验
- struts2 使用拦截器 实现用户权限的验证
- 使用拦截器进行权限的控制
- Apache Shiro 整合Spring 进行权限验证 以及在Freemarker中使用shiro标签
- springboot+angular项目 使用token方式进行权限验证