短视频开发app,webservice自定义加入拦截器
短视频开发app,webservice自定义加入拦截器实现的相关代码
1 pom.xml文件
1 | <br><project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" ><br> <modelVersion>4.0.0</modelVersion><br> <groupId>com.jaxWsService</groupId><br> <artifactId>jaxWsService</artifactId><br> <version>0.0.1-SNAPSHOT</version><br> <packaging>war</packaging><br> <br><name>01_jaxws_server</name><br> <dependencies><br> <!-- 要进行jaxws 服务开发 --><br> <dependency><br> <groupId>org.apache.cxf</groupId><br> <artifactId>cxf-rt-frontend-jaxws</artifactId><br> <version>3.0.1</version><br> </dependency><br> <!-- 内置jetty web服务器 --><br> <dependency><br> <groupId>org.apache.cxf</groupId><br> <artifactId>cxf-rt-transports-http-jetty</artifactId><br> <version>3.0.1</version><br> </dependency><br> <!-- 日志实现 --><br> <dependency><br> <groupId>org.slf4j</groupId><br> <artifactId>slf4j-log4j12</artifactId><br> <version>1.7.12</version><br> </dependency><br> <dependency><br> <groupId>junit</groupId><br> <artifactId>junit</artifactId><br> <version>4.10</version><br> <scope>test</scope><br> </dependency><br> </dependencies><br> <build><br> <pluginManagement><br> <plugins><br> <plugin><br> <groupId>org.apache.maven.plugins</groupId><br> <artifactId>maven-compiler-plugin</artifactId><br> <version>3.2</version><br> <configuration><br> <source>1.8</source><br> <target>1.8</target><br> <encoding>UTF-8</encoding><br> <showWarnings>true</showWarnings><br> </configuration><br> </plugin><br> </plugins><br> </pluginManagement><br> </build><br></project> |
2.自定义拦截器
1 | <br>package util;<br>import java.util.List;<br>import org.apache.cxf.binding.soap.SoapMessage;<br>import org.apache.cxf.headers.Header;<br>import org.apache.cxf.interceptor.Fault;<br>import org.apache.cxf.phase.AbstractPhaseInterceptor;<br>import org.apache.cxf.phase.Phase;<br>import org.w3c.dom.Element;<br>import org.w3c.dom.NodeList;<br> public class ServiceInterceptor extends AbstractPhaseInterceptor<SoapMessage> {<br> private static String tokenKey= "gacfbgjxybtrcbugaxbdgvjtertxbjFQXDVFVEWTFBA462432" ;<br> //在调用之前拦截<br>public ServiceInterceptor() {<br>super(Phase.PRE_INVOKE);<br>}<br>@Override<br>public void handleMessage(SoapMessage soap) throws Fault {<br>//获取请求头部信息<br>List<Header> headers = soap.getHeaders();<br>if(headers == null | headers.size()<1){<br>throw new Fault(new IllegalArgumentException("找不到Header,无法验证token信息"));<br>}<br>Header header = headers.get(0);<br>Element el = (Element)header.getObject();<br>NodeList tokens = el.getElementsByTagName("token");<br>if(tokens.getLength()<1){<br>throw new Fault(new IllegalArgumentException("无token信息"));<br>}<br>String token = tokens.item(0).getTextContent().trim();<br>//检查用户名和密码是否正确<br>if(!token.equals(tokenKey)) {<br>throw new Fault(new IllegalArgumentException("token验证失败"));<br>}else{<br>System.out.println("token验证成功");<br>}<br>//NodeList users = el.getElementsByTagName("username");<br>//NodeList passwords = el.getElementsByTagName("password");<br>////检查是否有用户名和密码元素<br>//if(users.getLength()<1){<br>//throw new Fault(new IllegalArgumentException("找不到用户信息"));<br>//}<br>//String username = users.item(0).getTextContent().trim();<br>//<br>//if(passwords.getLength()<1){<br>//throw new Fault(new IllegalArgumentException("找不到密码信息"));<br>//}<br>//String password = passwords.item(0).getTextContent();<br>//<br>////检查用户名和密码是否正确<br>//if(!"admin".equals(username) || !"admin".equals(password)){<br>//throw new Fault(new IllegalArgumentException("用户名或密码不正确"));<br>//}else{<br>//System.out.println("用户名密码正确允许访问");<br>//}<br>}<br>} |
以上就是短视频开发app,webservice自定义加入拦截器实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现