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

做一个人网站需要注意什么如何查询网站域名

做一个人网站需要注意什么,如何查询网站域名,株洲seo排名,建e网室内设计网官网vr全景文章目录 什么是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.dnsts.com.cn/news/263810.html

相关文章:

  • 网站代理备案价格网络营销策划书的结构
  • 网站建设大体包含网站备案的重要性
  • 百度推广官网网站客户管理软件哪家好
  • 网站备案时间米可网络科技有限公司
  • 网站上全景云台怎么做的以遇见为主题做网站
  • 怎样在设计网站做图赚钱吗nas 支持做网站
  • 迪庆企业网站建设咸阳市建设工程信息网
  • 山东杰瑞数字做网站wordpress 菜单连接到首页的某个位置
  • 网站建设公司怎么盈利松江品划网站建设
  • 合肥网站建设 一浪wordpress 新浪博客
  • 厦门网站建设哪家便宜网页布局的基本概念
  • iis7.0建设网站外管局网站做延期收汇报告
  • 软件开发 网页设计网站上海网站建设设计
  • 广州市建设工程招标管理办公室网站wordpress读取相册
  • 网站抓取优化搜索排名seo
  • 网站管理cms免费的h5场景制作平台
  • 怎么做软文代发平台网站品牌营销策划十大要点
  • 网站想更换服务器怎么做专业营销的网站建设公司哪家好
  • 西宁市规划和建设局网站微信公众平台开发实例教程
  • 在哪个网站上做推广作用好制作网站的心得
  • 简述网站建设的基本流程专业型企业网站有哪些
  • 企业网站建设 西宁上海公共招聘官网
  • 做一个网站最低多少钱智慧树网页设计与制作答案
  • 用jq和ajax做能登陆注册的一个网站网站美工用什么软件
  • 深鑫辉网站建设整体vi设计
  • 网站有哪些后台旅游微信网站建设
  • 在网站中添加百度地图wordpress抖音
  • 牡丹江建设信息网站做私人网站 违法
  • 携程网站官网公司网站实名认证
  • 有人做网站推广吗宁波高端网站设计价格