当前位置: 首页 > wzjs >正文

seo整站优化哪家好关于一学一做的短视频网站

seo整站优化哪家好,关于一学一做的短视频网站,网站建设的调研报告,济南网站建设飞鸟要在 Spring Boot 里实现接口统一拦截并校验 Token,可以借助 Spring 的拦截器机制。下面是具体的实现步骤和代码示例。 1. 创建 Token 工具类 import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgori…

要在 Spring Boot 里实现接口统一拦截并校验 Token,可以借助 Spring 的拦截器机制。下面是具体的实现步骤和代码示例。

1. 创建 Token 工具类

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Date;public class TokenUtils {// 密钥,可根据实际情况修改private static final String SECRET_KEY = "yourSecretKey";// Token 过期时间,单位为毫秒,这里设置为 1 小时private static final long EXPIRATION_TIME = 1000 * 60 * 60;// 生成 Token 的方法public static String generateToken(String username) {long timestamp = new Date().getTime();String data = username + ":" + timestamp;String hash = hashData(data + SECRET_KEY);return data + ":" + hash;}// 校验 Token 的方法public static boolean validateToken(String token, String username) {String[] parts = token.split(":");if (parts.length != 3) {return false;}String storedUsername = parts[0];long timestamp = Long.parseLong(parts[1]);String storedHash = parts[2];// 检查用户名是否匹配if (!storedUsername.equals(username)) {return false;}// 检查 Token 是否过期if (new Date().getTime() - timestamp > EXPIRATION_TIME) {return false;}// 重新计算哈希值并比较String data = storedUsername + ":" + timestamp;String newHash = hashData(data + SECRET_KEY);return newHash.equals(storedHash);}// 哈希处理方法private static String hashData(String data) {try {MessageDigest digest = MessageDigest.getInstance("SHA-256");byte[] encodedHash = digest.digest(data.getBytes(StandardCharsets.UTF_8));return Base64.getEncoder().encodeToString(encodedHash);} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}
}

2. 创建 Token 拦截器

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Component
public class TokenInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 从请求头中获取 TokenString token = request.getHeader("Authorization");// 这里简单假设用户名在请求参数中,实际应用中可根据需求调整String username = request.getParameter("username");if (token == null || username == null) {sendErrorResponse(response, "Token or username is missing");return false;}if (!TokenUtils.validateToken(token, username)) {sendErrorResponse(response, "Invalid Token");return false;}return true;}private void sendErrorResponse(HttpServletResponse response, String message) throws IOException {response.setContentType("application/json;charset=UTF-8");response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);PrintWriter writer = response.getWriter();writer.write("{\"error\": \"" + message + "\"}");writer.flush();writer.close();}
}

3. 配置拦截器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate TokenInterceptor tokenInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(tokenInterceptor).addPathPatterns("/**") // 拦截所有请求.excludePathPatterns("/login"); // 排除登录接口}
}

4. 控制器示例

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;@RestController
public class AuthController {@PostMapping("/login")public Map<String, String> login(@RequestBody Map<String, String> credentials) {String username = credentials.get("username");String password = credentials.get("password");// 这里可以添加用户名和密码的验证逻辑if ("yourUsername".equals(username) && "yourPassword".equals(password)) {String token = TokenUtils.generateToken(username);Map<String, String> response = new HashMap<>();response.put("token", token);return response;} else {return new HashMap<>();}}@PostMapping("/test")public String test() {return "Token validation passed";}
}

代码解释

  • TokenUtils 类:负责生成和校验 Token。
  • TokenInterceptor 类:实现了 HandlerInterceptor 接口,在 preHandle 方法中对请求进行拦截,从请求头中获取 Token,从请求参数中获取用户名,调用 TokenUtils 类的 validateToken 方法进行校验。若校验不通过,返回错误响应。
  • WebConfig 类:实现了 WebMvcConfigurer 接口,在 addInterceptors 方法中配置拦截器,拦截所有请求,但排除登录接口。
  • AuthController 类:包含登录接口 /login 和测试接口 /test,登录接口用于生成 Token,测试接口用于验证 Token 校验是否生效。

通过以上步骤,就能在 Spring Boot 中实现接口统一拦截并校验 Token。

http://www.dtcms.com/wzjs/558989.html

相关文章:

  • 网站做优化一开始怎么做wordpress404无法加载
  • 紫网站建设2015军考网站建设
  • 西安建设银行网站长沙专业网站建设.
  • 现成的手机网站做APP个体工商户可以备案哪些网站
  • 中文网站建设模板下载WordPress电影资源分享下载站
  • 网站后台多附件上传网站开发涉及内容
  • 婚庆摄影企业网站深圳前十设计公司
  • 深圳网站建设营销服务平台自己网站做优化的有权利卖么
  • 精品课网站建设凡科快图官方下载
  • 南宁网站设计多少钱最近三天发生的重要新闻
  • 旅游网站建设要求网页微博怎么用qq登录
  • wordpress适合做什么网站吗wordpress保存图片
  • 建网站的注意事项图书馆网站建设总结
  • 网站管理与建设教程重庆渝发建设有限公司官网
  • tint-k主题做企业网站买了服务器主机这么做网站
  • 合肥网站建设政务区广告联盟app下载官网
  • qq免费的推广引流软件企业网站做seo
  • 桓台新城建设有限公司网站分销管理系统
  • 百度收录网站但首页快照不更新如何成为厂家代理商
  • 做网站工作的怎么填职务wordpress网页文件太多
  • 网站建设多少费用做百度网站如何收费
  • 用代码做网站网站logoico怎么做
  • 站外引流推广渠道网站域名绑定好处
  • 惠安建设局网站陕西网站建设推广
  • 建设网站手机版如何注册一个空壳公司
  • 高中信息技术课程做网站用数据库做学校网站
  • 国外能下载模板的网站怎么样做贷款网站
  • 网站建设外地便宜计算机专业就业前景
  • 威海外贸网站建设联系方式手机网站模板演示
  • 平湖市住房建设局网站百度搜索热度排名