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

网站优化工作安排南通网站建设方案咨询

网站优化工作安排,南通网站建设方案咨询,合肥网络公司排名,婚纱网站建设案例项目后端部分统一解决方案 文章目录 项目后端部分统一解决方案一、异步响应规范格式类二、MD5加密工具类三、JwtHelper工具类四、CrosFilter过滤器 一、异步响应规范格式类 Result类 package com.pro.common;/*** 全局统一返回结果类**/ public class ResultT {// 返…项目后端部分统一解决方案 文章目录 项目后端部分统一解决方案一、异步响应规范格式类二、MD5加密工具类三、JwtHelper工具类四、CrosFilter过滤器 一、异步响应规范格式类 Result类 package com.pro.common;/*** 全局统一返回结果类**/ public class ResultT {// 返回码private Integer code;// 返回消息private String message;// 返回数据private T data;public Result(){}// 返回数据protected static T ResultT build(T data) {ResultT result new ResultT();if (data ! null)result.setData(data);return result;}public static T ResultT build(T body, Integer code, String message) {ResultT result build(body);result.setCode(code);result.setMessage(message);return result;}public static T ResultT build(T body, ResultCodeEnum resultCodeEnum) {ResultT result build(body);result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());return result;}/*** 操作成功* param data baseCategory1List* param T* return*/public staticT ResultT ok(T data){ResultT result build(data);return build(data, ResultCodeEnum.SUCCESS);}public ResultT message(String msg){this.setMessage(msg);return this;}public ResultT code(Integer code){this.setCode(code);return this;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public String getMessage() {return message;}public void setMessage(String message) {this.message message;}public T getData() {return data;}public void setData(T data) {this.data data;} }ResultCodeEnum 枚举类 package com.pro.common; /*** 统一返回结果状态信息类**/ public enum ResultCodeEnum {SUCCESS(200,success),USERNAME_ERROR(501,usernameError),PASSWORD_ERROR(503,passwordError),NOTLOGIN(504,notLogin),USERNAME_USED(505,userNameUsed);private Integer code;private String message;private ResultCodeEnum(Integer code, String message) {this.code code;this.message message;}public Integer getCode() {return code;}public String getMessage() {return message;} }二、MD5加密工具类 package com.pro.util;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public final class MD5Util {public static String encrypt(String strSrc) {try {char hexChars[] { 0, 1, 2, 3, 4, 5, 6, 7, 8,9, a, b, c, d, e, f };byte[] bytes strSrc.getBytes();MessageDigest md MessageDigest.getInstance(MD5);md.update(bytes);bytes md.digest();int j bytes.length;char[] chars new char[j * 2];int k 0;for (int i 0; i bytes.length; i) {byte b bytes[i];chars[k] hexChars[b 4 0xf];chars[k] hexChars[b 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException(MD5加密出错 e);}} }三、JwtHelper工具类 package com.pro.util;import com.alibaba.druid.util.StringUtils; import io.jsonwebtoken.*;import java.util.Date;public class JwtHelper {private static long tokenExpiration 24*60*60*1000;private static String tokenSignKey 123456;//生成token字符串public static String createToken(Long userId) {String token Jwts.builder().setSubject(YYGH-USER).setExpiration(new Date(System.currentTimeMillis() tokenExpiration)).claim(userId, userId).signWith(SignatureAlgorithm.HS512, tokenSignKey).compressWith(CompressionCodecs.GZIP).compact();return token;}//从token字符串获取useridpublic static Long getUserId(String token) {if(StringUtils.isEmpty(token)) return null;JwsClaims claimsJws Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims claims claimsJws.getBody();Integer userId (Integer)claims.get(userId);return userId.longValue();}//判断token是否有效public static boolean isExpiration(String token){try {boolean isExpire Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token).getBody().getExpiration().before(new Date());//没有过期有效返回falsereturn isExpire;}catch(Exception e) {//过期出现异常返回truereturn true;}} }步骤 前端登陆时发送登陆请求后端校验成功则将用户id加密到token中返回给前端前端收到 token 存到 localStorage 或 sessionStorage 中后续发送请求时都将 token 放到请求头中带给后端 且前端在路由跳转前都需校验是否存在 token 才进行页面跳转使用路由前置守卫 四、CrosFilter过滤器 package com.pro.filters;import jakarta.servlet.*; import jakarta.servlet.annotation.WebFilter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;WebFilter(/*) public class CrosFilter implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletResponse response (HttpServletResponse) servletResponse;HttpServletRequest request (HttpServletRequest) servletRequest;response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE, HEAD);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Headers, access-control-allow-origin, authority, content-type, version-info, X-Requested-With);// 非预检请求,放行即可,预检请求,则到此结束,不需要放行if(!request.getMethod().equalsIgnoreCase(OPTIONS)){filterChain.doFilter(servletRequest, servletResponse);}} }如果使用的是spring boot用一个 CrossOrigin 就可以解决跨域问题或者实现 WebMvcConfigurer 接口配置全局允许跨域
http://www.zqtcl.cn/news/134669/

相关文章:

  • 山东省建设执业师网站建设网站图片
  • 网站建设的安全可行性网站建设教学设计
  • 网站架设建设动易门户网站价格
  • 公司快速建站商城网站建设讯息
  • it公司做网站用什么软件鲁中网站
  • 制作属于自己的app教程北京和隆优化招聘
  • wordpress会员卡系统青岛百度优化
  • 网站的管理系统网站权限配置
  • 龙岗高端网站建设在进行网站设计时
  • 网站制作定制浙江交工宏途交通建设有限公司网站
  • 域名网站计划怎么写高端网站建设 引擎技
  • 做自己的网站流量怎么桂林人论坛桂林板路
  • 上海制作网站多少钱wordpress主题站主题
  • 企业网站开发软件WordPress访问者ip
  • 视频网站dedecms在源码之家下载的网站模板可以作为自己的网站吗
  • 西宁好的网站建设公司怎样将视频代码上传至网站
  • 内网网站开发专业建站公司报价
  • 做地方网站需要什么部门批准天津专业做标书
  • 域名注册信息查询网站推广seo是什么
  • 做外贸网站哪家公司好常见的管理系统
  • 网站设计报价方案微信公众号外包
  • 网站设计遇到难题wordpress qq 微博
  • 网站模板种类长沙seo推广优化
  • 郑州网络建站公司wordpress安装及配置
  • 福州移动网站建设公司注册地址怎么写
  • 网站线上投票怎样做做铁艺需要什么网站
  • 襄阳营销型网站建设网站开发语言排行榜
  • 网站架构演变流程淄博亿泰
  • 电子商务网站功能介绍招商网站建设
  • 哈尔滨模板网站建站市场监督管理局12315