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

华大网站建设百度手机助手免费下载

华大网站建设,百度手机助手免费下载,湖州市网站建设公司,网站开通后目录 一、引入依赖二、JwtUtil 代码解读三、LoginController 代码解读四、整体代码五、结果展示 一、引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></depende…

目录

  • 一、引入依赖
  • 二、JwtUtil 代码解读
  • 三、LoginController 代码解读
  • 四、整体代码
  • 五、结果展示

一、引入依赖

 		<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>

二、JwtUtil 代码解读

这个Java类是一个工具类,用于生成和验证JSON Web Tokens(JWT)。JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。这个信息可以被验证和信任,因为它是数字签名的。在这个例子中,使用了Java的jsonwebtoken库。

下面是对这个类每行代码的详细解释:

  1. import io.jsonwebtoken.*;:引入jsonwebtoken库的所有类。
  2. import java.util.Date;:引入java.util包下的Date类,用于处理日期和时间。
  3. import java.util.HashMap;:引入java.util包下的HashMap类,用于创建哈希映射。
  4. import java.util.Map;:引入java.util包下的Map接口,用于创建映射。
  5. public class JwtUtil {:声明一个公共类JwtUtil。
  6. private static final String SECRET_KEY = "your-secret-key";:在类中声明一个私有的、静态的、不可变的字符串变量SECRET_KEY,并初始化为"your-secret-key"。这个密钥用于JWT的签名和验证。
  7. public static String generateToken(String username) {:声明一个公共的、静态的方法generateToken,接收一个字符串参数username,并返回一个字符串。这个方法用于生成JWT。
  8. Map<String, Object> claims = new HashMap<>();:创建一个新的HashMap,用于存储JWT的载荷(claims)。
  9. claims.put("username", username);:将username添加到载荷中,键是"username",值是传递给generateToken方法的username参数。
  10. return Jwts.builder():使用Jwts类的builder方法开始构建一个新的JWT。
  11. .setClaims(claims):设置JWT的载荷。
  12. .setExpiration(new Date(System.currentTimeMillis() + 3600000)):设置JWT的过期时间。这里设置为当前时间之后的1小时(3600000毫秒)。
  13. .signWith(SignatureAlgorithm.HS256, SECRET_KEY):使用HS256算法和上面定义的SECRET_KEY对JWT进行签名。
  14. .compact();:生成JWT的字符串表示形式并返回。
  15. public static boolean validateToken(String token) {:声明一个公共的、静态的方法validateToken,接收一个字符串参数token,并返回一个布尔值。这个方法用于验证JWT。
  16. try {:开始一个try块,用于捕获可能出现的异常。
  17. Jwts.parser():使用Jwts类的parser方法开始解析JWT。
  18. .setSigningKey(SECRET_KEY):设置用于解析JWT的签名密钥。
  19. .parseClaimsJws(token):解析JWT,得到一个ClaimsJws对象。
  20. .getBody();:获取JWT的载荷。如果没有异常抛出,那么JWT是有效的,所以返回true。
  21. } catch (ExpiredJwtException e) {:捕获过期的JWT异常,返回false。
  22. } catch (UnsupportedJwtException e) {:捕获不支持的JWT类型异常,返回false。
  23. } catch (MalformedJwtException e) {:捕获格式错误的JWT异常,返回false。
  24. } catch (SignatureException e) {:捕获签名验证失败的JWT异常,返回false。
  25. } catch (IllegalArgumentException e) {:捕获其他非法情况的异常,返回false。
  26. }:结束try-catch块。
  27. }:结束validateToken方法。
  28. }:结束JwtUtil类。

三、LoginController 代码解读

这是一个使用Java语言和Spring框架编写的简单的登录控制器。下面是对这段代码的详细解释:

  • import com.minster.yanapi.common.ApiResponse;:导入名为ApiResponse的类,它可能是一个用于封装API响应的通用类,可能包含成功或失败的消息、状态码等信息。
  • import com.minster.yanapi.common.ResponseCode;:导入名为ResponseCode的枚举或类,可能包含API响应的状态码(例如,成功、失败、无效凭据等)。
  • import org.springframework.web.bind.annotation.*;:导入Spring MVC框架的注解,这些注解用于定义Web请求的处理方法。
  • @RestController:这是Spring MVC的注解,它表示该类是一个REST控制器。Spring会将此类中的方法返回的对象直接转化为JSON或XML等格式的响应数据。
  • @RequestMapping("/hello"):这是Spring MVC的注解,它定义了该控制器处理的基础URL路径。在这种情况下,所有路由都将以/hello开始。
  • public class LoginController {:定义了一个公开的类LoginController
  • @PostMapping("/login"):这是Spring MVC的注解,它定义了一个处理方法,该方法将处理向/hello/login路径发送的POST请求。
  • public ApiResponse login(@RequestParam("username") String username, @RequestParam("password") String password) {:定义了一个公开的方法login,它接收两个参数,分别是用户名和密码。这两个参数是通过POST请求中的参数提供的。这个方法返回一个ApiResponse对象。
  • if ("admin".equals(username) && "password".equals(password)) {:这是一个简单的验证过程,只检查用户名是否为"admin",密码是否为"password"。在真实的应用中,你应该连接数据库或其他数据源来验证凭据。
  • String token = JwtUtil.generateToken(username);:如果验证成功,它将生成一个JWT(JSON Web Token)并将其赋值给token变量。
  • return ApiResponse.success(token);:返回一个成功的ApiResponse,其中可能包含生成的JWT。
  • return ApiResponse.failed(ResponseCode.Invalid_credentials);:如果验证失败,返回一个失败的ApiResponse,并携带一个表示无效凭据的状态码。
  • }:结束login方法。
  • }:结束LoginController类。

四、整体代码


import io.jsonwebtoken.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class JwtUtil {private static final String SECRET_KEY = "your-secret-key"; // 替换为你自己的密钥public static String generateToken(String username) {Map<String, Object> claims = new HashMap<>();claims.put("username", username);return Jwts.builder().setClaims(claims).setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 设置过期时间为1小时.signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();}public static boolean validateToken(String token) {try {Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();return true;} catch (ExpiredJwtException e) {return false; // 标记为过期的JWT} catch (UnsupportedJwtException e) {return false; // 不支持的JWT类型} catch (MalformedJwtException e) {return false; // 格式错误的JWT} catch (SignatureException e) {return false; // 签名验证失败的JWT} catch (IllegalArgumentException e) {return false; // 其他非法情况}}
}
import com.minster.yanapi.common.ApiResponse;
import com.minster.yanapi.common.ResponseCode;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/hello")
public class LoginController {@PostMapping("/login")public ApiResponse login(@RequestParam("username") String username, @RequestParam("password") String password) {// 在这里进行用户名和密码的验证,这里只是简单示例,实际情况下需要连接数据库等进行验证if ("admin".equals(username) && "password".equals(password)) { // 假设用户名为"admin",密码为"password"时验证通过String token = JwtUtil.generateToken(username); // 生成JWT并返回给客户端return ApiResponse.success(token);} else {return ApiResponse.failed(ResponseCode.Invalid_credentials); // 返回错误信息给客户端,表示验证失败}}
}

五、结果展示

在这里插入图片描述

http://www.zhongyajixie.com/news/26215.html

相关文章:

  • 做网站是com好还是cn好广州新一期lpr
  • 秦皇岛做网站seo的网站推广推广
  • 做微信的微网站费用多少合适市场调研的基本流程
  • vs 2008网站做安装包广告营销
  • wordpress4.6 手册seo排名优化收费
  • 太原网站制作在线林云seo博客
  • 广西城乡住房建设厅网站首页广州seo关键词优化外包
  • 5g网站空间需要多少钱刷seo关键词排名软件
  • 做折扣的网站有哪些在哪里找软件开发公司
  • 东莞公司做网站百度关键字优化精灵
  • 武汉 网站建设一条龙搜索引擎优化方案案例
  • 哪个网站做自媒体比较好免费制作自己的网站
  • 团购营销型网站制作企业推广宣传方式
  • 访问网站的原理临安网站seo
  • 重庆建设汽车系统股份有限公司百度seo排名点击软件
  • 制作网站 美工seo网站分析
  • 佛山百度网站排名优化网站建设是干什么的
  • 成都有哪些做网站的牛推网
  • asp.net做网站的流程网上卖产品怎么推广
  • 站长工具高清有吗开电商需要多少钱
  • 网站建设公司南宁网页推广链接怎么做
  • 北京住房和城乡建设委员会网站软文推广文章范文1000
  • 建设部网站规委年报百度一下官方网站
  • 昆山做轮胎网站seo必备软件
  • 山东网站开发会计培训机构
  • 卖书的网站怎么做培训机构加盟
  • 帮企网站建设网站seo视频狼雨seo教程
  • 惠州网站制作策划口碑营销方案
  • wordpress新浪转发深圳市seo点击排名软件价格
  • 国内做设计的网站建设厦门人才网手机版