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

域名申请哪个网站好注册商标费用多少钱

域名申请哪个网站好,注册商标费用多少钱,茂名网站制作维护,网站1g租用价格文章目录 什么是JWT?为什么需要令牌?如何实现?添加依赖#xff1a;JwtUtils.java#xff08;生成、解析Token的工具类#xff09;jwt配置#xff1a;登录业务逻辑#xff1a;其他关联代码#xff1a;测试#xff1a; 什么是JWT? JWT#xff08;Json Web TokenJwtUtils.java生成、解析Token的工具类jwt配置登录业务逻辑其他关联代码测试 什么是JWT? JWTJson Web Token简单来说就是web领域中基于json格式的令牌。是最常用的令牌规范。 第一部分Header头指定了令牌的签名算法、令牌类型。第二部分Payload有效载荷使用Base64来编码的不是加密算法能够解码。因此该部分不适合存放用户的私密信息如密码。第三部分Signature签名将第一部分和第二部分通过密钥加密得到。 解析Token可以根据第三部分解密得到前两部分的信息再比对前端传来的用户信息完成校验。 Token验证失败的情况 token过期密钥不正确篡改了头部、载荷等 为什么需要令牌? 承载了一定的数据信息减少数据库访问次数具有一定的防伪功能 如何实现? 该部分代码不需要硬记理解后直接使用即可。 添加依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version /dependencyJwtUtils.java生成、解析Token的工具类 public class JwtUtil {/*** 生成Token* param secretKey* param ttlMillis* param claims* return*/public static String createToken(String secretKey, long ttlMillis, MapString, Object claims) {// 指定签名的时候使用的签名算法也就是header那部分SignatureAlgorithm signatureAlgorithm SignatureAlgorithm.HS256;// 生成token的过期时间long expMillis System.currentTimeMillis() ttlMillis;Date exp new Date(expMillis);// 设置jwt的bodyJwtBuilder builder Jwts.builder()// 如果有私有声明一定要先设置这个自己创建的私有的声明这个是给builder的claim赋值一旦写在标准的声明赋值之后就是覆盖了那些标准的声明的.setClaims(claims)// 设置签名使用的签名算法和签名使用的秘钥.signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))// 设置过期时间.setExpiration(exp);return builder.compact();}/*** 解析token* param secretKey* param token* return*/public static Claims parseToken(String secretKey, String token) {// 得到DefaultJwtParserClaims claims Jwts.parser()// 设置签名的秘钥.setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))// 设置需要解析的jwt.parseClaimsJws(token).getBody();return claims;}}jwt配置 application.yaml user:jwt:# 设置jwt签名加密时使用的秘钥user-secret-key: xxx# 设置jwt过期时间user-ttl: 7200000# 设置前端传递过来的令牌名称user-token-name: tokenJwtProperties Component ConfigurationProperties(prefix user.jwt) Data public class JwtProperties {private String userSecretKey;private long userTtl;private String userTokenName; }JwtClaimsConstant管理常量 public class JwtClaimsConstant {public static final String USER_ID userId; }jwt拦截器 Component Slf4j public class JwtInterceptor implements HandlerInterceptor {Resourceprivate JwtProperties jwtProperties;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//1. 获取用户信息String token request.getHeader(jwtProperties.getUserTokenName());//2. 判断用户信息是否有效存入ThreadLocaltry {Claims claims JwtUtil.parseToken(jwtProperties.getUserSecretKey(), token);String userInfo claims.get(JwtClaimsConstant.USER_ID).toString();if (StrUtil.isNotBlank(userInfo)){UserContext.setUser(Long.valueOf(userInfo));}//3. 放行return true;}catch (Exception e){//4. 不通过response.setStatus(401);return false;}}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//清除用户信息UserContext.removeUser();} } WebMvc配置添加jwt拦截器 Configuration public class WebConfig implements WebMvcConfigurer {Resourceprivate JwtInterceptor jwtInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(jwtInterceptor).addPathPatterns(/user/**).excludePathPatterns(/user/user/login);} }UserContext存储用户登录信息方便其他业务需求获取 public class UserContext {private static final ThreadLocalLong threadLocal new ThreadLocal();/*** 获取用户信息* return*/public static Long getUser() {return threadLocal.get();}/*** 设置用户信息* param userId*/public static void setUser(Long userId){threadLocal.set(userId);}/*** 移除用户信息*/public static void removeUser(){threadLocal.remove();} }登录业务逻辑 controller层 RestController RequestMapping(/user/user) Slf4j public class UserController {Resourceprivate UserService userService;PostMapping(/login)public UserLoginVO login(RequestBody UserLoginDTO userLoginDTO){log.info(用户登录{},userLoginDTO);return userService.login(userLoginDTO);} } service层 public interface UserService {UserLoginVO login(UserLoginDTO userLoginDTO); }Service Slf4j public class UserServiceImpl implements UserService {Resourceprivate UserMapper userMapper;Resourceprivate JwtProperties jwtProperties;Overridepublic UserLoginVO login(UserLoginDTO userLoginDTO) {String username userLoginDTO.getUsername();String password userLoginDTO.getPassword();//1. 校验用户名和密码UserLogin userLogin userMapper.getUserByName(username);if (userLogin null){throw new BaseException(用户名或密码错误);}password DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(userLogin.getPassword())){throw new BaseException(用户名或密码错误);}//2. 生成tokenHashMapString, Object claims new HashMap();claims.put(JwtClaimsConstant.USER_ID, userLogin.getId());String token JwtUtil.createToken(jwtProperties.getUserSecretKey(),jwtProperties.getUserTtl(),claims);//3. 封装voUserLoginVO loginVO UserLoginVO.builder().token(token).userId(userLogin.getId()).username(userLogin.getUsername()).build();return loginVO;} }mapper层 Mapper public interface UserMapper {UserLogin getUserByName(String username); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.sky.user.mapper.UserMapperselect idgetUserByName resultTypecom.sky.user.pojo.entity.UserLoginselect *from user_login where username #{username} and is_delete 0;/select /mapper其他关联代码 Data AllArgsConstructor NoArgsConstructor public class UserLoginDTO {/*** 用户名*/private String username;/*** 密码*/private String password;}Data Builder NoArgsConstructor AllArgsConstructor public class UserLoginVO {private String token;private Long userId;private String username; }测试 登录接口 其他接口 以上为个人学习分享如有问题欢迎指出
http://www.w-s-a.com/news/898602/

相关文章:

  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告