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

ps做网站需注意什么新竹自助网站

ps做网站需注意什么,新竹自助网站,友情连接,考试报名费悦生活建设银行网站文章目录 一、后端代码1.响应工具类2.jwt工具类3.登录用户实体类4.登录接口5.测试接口6.过滤器7.启动类 二、前端代码1.登录页index 页面 三、效果展示 一、后端代码 1.响应工具类 package com.etime.util;import com.etime.vo.ResponseModel; import com.fasterxml.jackson.… 文章目录 一、后端代码1.响应工具类2.jwt工具类3.登录用户实体类4.登录接口5.测试接口6.过滤器7.启动类 二、前端代码1.登录页index 页面 三、效果展示 一、后端代码 1.响应工具类 package com.etime.util;import com.etime.vo.ResponseModel; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.MediaType;import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** Date 2024/6/10 10:00* Author liukang**/ public class ResponseUtil {public static void write(ResponseModel rm, HttpServletResponse response) throws IOException {// 构造响应头response.setContentType(MediaType.APPLICATION_JSON_VALUE);response.setCharacterEncoding(utf-8);// 解决跨域问题 设置跨域头response.setHeader(Access-Control-Allow-Origin,*);// 输出流PrintWriter out response.getWriter();// 输出out.write(new ObjectMapper().writeValueAsString(rm));// 关闭流out.close();} } 2.jwt工具类 package com.etime.util;import io.jsonwebtoken.*;import java.util.Date; import java.util.Map; import java.util.UUID;/*** Date 2024/6/10 10:04* Author liukang**/ public class JwtUtil {private static String secret secret;/*** 创建jwt* author liukang* date 10:36 2024/6/10* param expire* param map* return java.lang.String**/public static String generateToken(long expire, Map map){// 床jwt构造器JwtBuilder jwtBuilder Jwts.builder();// 生成jwt字符串String jwt jwtBuilder//头部.setHeaderParam(typ,JWT).setHeaderParam(alg,HS256)// 载荷.setClaims(map) // 设置多个自定义数据 位置只能放在前面如果放在后面那前面的载荷会失效.setId(UUID.randomUUID().toString())// 唯一标识.setIssuer(liukang)// 签发人.setIssuedAt(new Date())// 签发时间.setSubject(jwtDemo)// 主题.setExpiration(new Date(System.currentTimeMillis()expire))//过期时间// 签名.signWith(SignatureAlgorithm.HS256,secret).compact();return jwt;}/*** 创建jwt* author liukang* date 10:36 2024/6/10* param expire* return java.lang.String**/public static String generateToken(long expire){// 床jwt构造器JwtBuilder jwtBuilder Jwts.builder();// 生成jwt字符串String jwt jwtBuilder//头部.setHeaderParam(typ,JWT).setHeaderParam(alg,HS256)// 载荷.setId(UUID.randomUUID().toString())// 唯一标识.setIssuer(liukang)// 签发人.setIssuedAt(new Date())// 签发时间.setSubject(jwtDemo)// 主题.setExpiration(new Date(System.currentTimeMillis()expire))//过期时间// 签名.signWith(SignatureAlgorithm.HS256,secret).compact();return jwt;}/*** 解析jwt* author liukang* date 10:36 2024/6/10* param jwt* return io.jsonwebtoken.Claims**/public static Claims parseToken(String jwt){JwsClaims claimsJws Jwts.parser().setSigningKey(secret).parseClaimsJws(jwt);Claims playload claimsJws.getBody();return playload;} } 3.登录用户实体类 package com.etime.entity;import lombok.Data;/*** Date 2024/6/10 10:39* Author liukang**/ Data public class User {private String username;private String password; } 4.登录接口 package com.etime.controller;import com.etime.entity.User; import com.etime.util.JwtUtil; import com.etime.vo.ResponseModel; import org.springframework.web.bind.annotation.*;/*** Date 2024/6/10 10:38* Author liukang**/ RestController CrossOrigin public class LoginController {PostMapping(/login)public ResponseModel login(RequestBody User user){Integer code 200;String msg success;String token null;if(user.getUsername().equals(admin)user.getPassword().equals(123)){// 生成jwttoken JwtUtil.generateToken(1000*10);// 设置有效期为10s}else {code 500;msg failure;}return new ResponseModel(code,msg,token);}} 5.测试接口 package com.etime.controller;import com.etime.vo.ResponseModel; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController;/*** Date 2024/6/10 12:51* Author liukang**/ CrossOrigin RestController public class TestController {PostMapping(/test)public ResponseModel test() {return new ResponseModel(200,success,测试请求接口成功!);}} 6.过滤器 package com.etime.filter;import com.etime.util.JwtUtil; import com.etime.util.ResponseUtil; import com.etime.vo.ResponseModel; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpMethod; import org.springframework.http.HttpRequest; import org.springframework.util.StringUtils;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;/*** Description jwt过滤器* Date 2024/6/10 9:46* Author liukang**/ WebFilter(urlPatterns /*) // 过滤所有路径 public class JwtFilter implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 得到两个对象HttpServletRequest request (HttpServletRequest) servletRequest;HttpServletResponse response (HttpServletResponse) servletResponse;//直接放行if(HttpMethod.OPTIONS.toString().equals(request.getMethod())){filterChain.doFilter(request,response);return;}String requestURI request.getRequestURI(); // 不含主机和端口号if(requestURI.contains(/login)){filterChain.doFilter(request,response);return;}// 得到请求头的信息accessTokenString token request.getHeader(accessToken);if(!StringUtils.hasText(token)){//响应前端错误的消息提示ResponseModel responseModel new ResponseModel(500,failure,令牌缺失);ResponseUtil.write(responseModel,response);return;}// 解析Token信息try {JwtUtil.parseToken(token);}catch (Exception e){//响应前端错误的消息提示ResponseModel responseModel new ResponseModel(401,failure,令牌过期);ResponseUtil.write(responseModel,response);return;}filterChain.doFilter(request,response);} }7.启动类 package com.etime;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan;/*** Author liukang* Date 2022/7/4 11:32*/ SpringBootApplication ServletComponentScan(basePackages com.etime.filter)// 这个包下激活WebFilter这个注解 public class Application {public static void main(String[] args) {SpringApplication.run(Application.class);} } 二、前端代码 1.登录页 templatediv classhelloform用户名input v-modelusername/br密码input v-modelpassword /brbutton clicklogin登录/button/form/div/templatescriptexport default {data () {return {username:,password:,}},methods:{login(){this.axios.post(http://localhost:8088/login,{username:this.username,password:this.password,}).then(response {console.log(response.data);if(response.data.code200){sessionStorage.setItem(accessToken,response.data.token)this.$router.push({ path: index});}}).catch(error {console.error(error);});}},}/scriptstyle scoped/style index 页面 templatedivbutton clicktest请求受保护的接口/button/div/templatescriptexport default {data () {return {}},methods:{test(){const accessToken sessionStorage.getItem(accessToken)let token nullif(accessToken){token accessToken}console.log(token)this.axios.post(http://localhost:8088/test,{},{headers:{accessToken:token}}).then(response {// if(response.data.code200){console.log(response.data);// }}).catch(error {console.error(error);});},},}/scriptstyle scoped/style 三、效果展示 1.点击登录后后端给前端办法jwt令牌前端将其存入sessionStorage中 2.点击【请求后端受保护的接口】按钮 3.继续多次点击【请求后端受保护的接口】按钮 可以看见请求几次成功后便显示令牌过期这是因为为了测试方便我们颁发令牌时有效期设置的10秒 4.在请求接口中不传递Token 重新登录并点击【请求后端受保护的接口】按钮
http://www.hkea.cn/news/14347298/

相关文章:

  • 网站建设实力龙岩app定制
  • 做网站有限公司如何建设成为营销网站
  • 中国建设银行官网网站网站建设公司新闻
  • 免费建网站域名网络服务商机构
  • 校园网站建设案例网站建设服务好公司排名
  • app网站建设工作师企业信息系统官网
  • 建网站怎么做报分系统客源汇软件效果怎么样
  • 有没有做文创的网站国内响应式网站案例
  • 建站都需要什么竹子建站邀请码
  • 劳保用品 技术支持 东莞网站建设梵克雅宝戒指
  • cms网站开发毕设无锡网站建设网站
  • 2017网站设计尺寸网站建设 工作职责
  • 网站建设作业网站设计怎么做才好看
  • 上海做网站那家好绍兴免费网站建站模板
  • 济南品牌网站建设公司百度信息流是什么
  • wordpress主题 网站大全网站销售的优势
  • 无法访问网站网页制作培训班课程
  • 网站开发怎么挣钱搜索引擎营销的内容和层次有哪些
  • 做网站跟app需要多少钱如何制作自媒体短视频
  • 六安市 网站集约化建设电烤箱做蛋糕网站
  • 建个公司网站要多少钱大连网站制作最好的公司
  • 漳州市住房与城乡建设部网站网站开发的内容
  • 阜阳网站建设费用wordpress文章关键字怎么添加
  • 网站建设龙兵科技亚马逊云服务器收费标准
  • 逐鹿网站建设企业品牌推广价格
  • 南京电商网站设计公司南京一对一网站建设
  • 怎么做网站赚钱放广告自学做网站可以吗
  • 网站设计要学哪些网站规划与建设实验心得
  • 欧美企业网站模板seo黑帽是什么
  • 用来做微网站的网站建设优化广告流量