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

asp模版网站如何做优化中国建设银行个人账户查询

asp模版网站如何做优化,中国建设银行个人账户查询,天津圣辉友联网站建设,青岛出版集团网站jwt令牌的基本概念#xff1a; 1. JWT#xff08;JSON Web Token#xff09; 定义#xff1a;JWT 是一种开放标准#xff08;RFC 7519#xff09;#xff0c;用于在各方之间作为 JSON 对象安全地传输信息。它可以被验证和信任#xff0c;因为它是数字签名的。结构 1. JWTJSON Web Token 定义JWT 是一种开放标准RFC 7519用于在各方之间作为 JSON 对象安全地传输信息。它可以被验证和信任因为它是数字签名的。结构JWT 有三个部分每部分使用 . 分隔 Header包含令牌的类型通常是 JWT和所使用的签名算法如 HMAC SHA256 或 RSA。Payload包含声明claims即存储的信息可以是用户信息、权限等。Signature用于验证消息的真实性以防止数据被篡改 和API签名认证的关系 这其实和API签名认证的过程有点像API签名认证是在数据库字段中添加一个secretKey然后根据前端传过来的字段拼起来根据相同的加密算法重新加密再和数据库中的secretKey进行比对。 和传统的会话技术的对比 传统会话技术当你登录完成之后在服务器端会生成一个session来记录你的登录态 当你登录之后会给你的登录态设置一个值下次访问其它接口的时候就直接检查你的登录态 传统的会话技术会将信息存储在服务器上如果用户过多其实是有点怕存储不了的 但是传统的会话技术对用户的掌控能力更强就是我可以直接在我的数据库中将session设置为失效你直接就登录不了不过对比于jwt我们必须会设置一个过期时间只有等过期时间过去了你才不能登录。有利有弊。 整体的流程 就是当你登录成功之后系统会给你下发一个令牌这个令牌肯定会比较复杂拼接你的账号密码这些然后经过加密算法算出来一个字符串三个部分三个部分就是我上面说的请求头负载签名。 这就是你的登录凭证了当每次你需要调用其它接口的时候就需要这个登录凭证说到这里也可以稍微提一下就是我们每个方法之前都需要加一段这个判断逻辑嘛其实可能不用只需要配置一个全局拦截器就行。 我们从上面得流程中也能知道我们需要在用户登录成功之后下发令牌 先引入一个依赖 !-- 引入JWT令牌的依赖--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency 代码 controller层 Slf4j RestController CrossOrigin RequestMapping(/user) public class UserController {Resourceprivate NewsUserService newsUserService;PostMapping(/login)public Result userLogin(RequestBody UserLoginRequest userLoginRequest){log.info(登录接口userLoginRequest);UserLoginVO userLoginVO newsUserService.login(userLoginRequest);System.out.println(userLoginVO.getToken());return Result.ok(userLoginVO);}} service层 Overridepublic UserLoginVO login(UserLoginRequest userLoginRequest) {//1:取出参数查询数据进行校验final String userName userLoginRequest.getUserName();final String userPwd userLoginRequest.getUserPwd();LambdaQueryWrapperNewsUser lambdaQueryWrapper new LambdaQueryWrapper();lambdaQueryWrapper.eq(NewsUser::getUsername,userName);final NewsUser user this.getOne(lambdaQueryWrapper);//2:判断这个user是否为空//todo 全局异常处理器if(user null){return null;}//3:判断这个密码是否和数据库中加密的密码一致if(StringUtils.isBlank(user.getUser_pwd())|| !MD5Util.encrypt(userPwd).equals(user.getUser_pwd())){return null;}//4:下发令牌MapString,Object claims new HashMap();claims.put(username,user.getUsername());claims.put(userpassword,user.getUser_pwd());final String jwtToken JwtUtils.createJwtToken(claims);System.out.println(jwtTokenjwtToken);final UserLoginVO userLoginVO new UserLoginVO();userLoginVO.setUid(user.getUid());userLoginVO.setToken(jwtToken);return userLoginVO;} 代码整体逻辑 首先上来就是对前端传过来得参数进行校验 接着再从数据库中查出是否有这个用户 都确定无误之后就开始生成令牌这里得生成令牌我用了一个工具类JwtUtils。 生成令牌之后就要给这个登录用户发放令牌这所谓得发放令牌就是将这个token封装在这个响应成功得实体中。 下面是响应成功得封装 Data public class UserLoginVO {/*** 用户id*/private Integer uid;/*** token*/private String token; } jwt工具类 public class JwtUtils {private static String salt abcdefg;//盐值private static Long expire 43200000L;//12小时过期时间public static String createJwtToken(MapString,Object claims){final String jwt Jwts.builder().addClaims(claims).signWith(SignatureAlgorithm.HS256, salt).setExpiration(new Date(System.currentTimeMillis() expire)).compact();return jwt;}} 生成令牌我们调用这个Jwts.build方法 里面构建三个东西 一个是你得账号密码这些你想进行加密得东西用Map包装起来  一个就是签名算法 还有一个是过期时间 小坑 签名算法得key不能指定太短 JWT 生成token时报错secret key byte array cannot be null or empty. 把签名算法得key或者盐值搞长点就行 我们现在已经把这个jwt令牌生成好了并且也下发给用户了用户访问其它操作得时候需要带上这个令牌下一步我们就需要去解析这个令牌了。 我们可以定义一个拦截器我这里用得是AOP其实我感觉用拦截器更好 拦截器和AOP得对比 拦截器 拦截器通常用于请求处理链中它会在控制器Controller方法被调用之前和之后执行。拦截器是实现 HandlerInterceptor 接口的类通过 Spring MVC 的 DispatcherServlet 配置来注册。 AOP AOP 通过切面Aspect定义横切逻辑可以在多个地方复用。具体的切面在代码中使用注解标注Spring 会解析这些注解并自动织入到相应的地方。 拦截器我在spingMVC那一篇中有写道 我们从上面的对比结果中可以得出拦截器更多是用在Controller层的拦截AOP是我们可以自己定义的。 再回顾我们的登录常见我们是不是只需要在controller层进行一个拦截就是在你调用其它方法的时候进行一个拦截就行。 不过话又说回来了只要你AOP的范围选Controller层哪这个作用就和拦截器差不多了。 说了这么多我下面的案例是用AOP我顺带也复习一下。 Slf4j Aspect Component public class LoginCheckInterceptor {Resourceprivate HttpServletRequest request;Around(execution(* com.test.microheadline.controller..*(..)))public Object JwtTest(ProceedingJoinPoint point) throws Throwable {final String uri request.getRequestURI();if(uri.contains(login)){return point.proceed();}String jwt request.getHeader(token);System.out.println(request);System.out.println(JWT令牌 jwt);final Claims claims JwtUtils.parseJWT(jwt);return point.proceed();} } 整体的代码逻辑 定义一个切面类Aspect并且交给IOC容器管理Component Around(execution(* com.test.microheadline.controller..*(..)))指定我们的作用范围这里好像有更专业的词我一时间文件了是整个Controller 然后分析方法里面的具体逻辑: 首先我们需要从请求头中拿到jwt令牌 记住这个我们需要判断这个路径是不是登录方法如果是登录方法我们都还没给他令牌肯定 会报错 接着我们进行解析也是调用jwt的工具类 public class JwtUtils {private static String salt abcdefg;//盐值private static Long expire 43200000L;//12小时过期时间public static String createJwtToken(MapString,Object claims){final String jwt Jwts.builder().addClaims(claims).signWith(SignatureAlgorithm.HS256, salt).setExpiration(new Date(System.currentTimeMillis() expire)).compact();return jwt;}public static Claims parseJWT(String jwt){final Claims claims Jwts.parser().setSigningKey(salt).parseClaimsJws(jwt).getBody();return claims;}} 解析之后放行return point.proceed(); 这个的point是AOP的连接点proceed就是让这个点执行下一步流程就是放行这里可能有点像断点 小坑 我们在用Knife4j进行测试的时候我们发送这个请求的时候这个文档不会给我们自动带上这个jwt令牌所以我们需要登录过后获取到这个令牌之后在这个全局变量里面设置一下
http://www.w-s-a.com/news/355637/

相关文章:

  • 网站漏洞扫描工具wampserver集成环境搭建了一个织梦cms网站
  • 如何在局域网上做网站宁波设计公司排行榜
  • 自己的电脑做网站服务器吗百度搜索风云榜总榜
  • 做化妆品的一些网站企业网站建设与营运计划书
  • 重庆速代网络科技seo整站优化服务教程
  • 成都比较好的装修设计公司seo3的空间构型
  • 开发商建设审批网站成都创意设计公司
  • 百度快照比网站上线时间早wordpress新建阅读量字段
  • 国家工程建设标准化协会网站网站开发工具有
  • 上海网站建设集中公关公司组织架构图
  • wordpress副标题的作用百度网站标题优化
  • 大连哪家公司做网站比较好wordpress 判断用户组
  • 网站空间1g多少钱东莞公司高端网站建设
  • 网站服务器出错是什么意思做餐饮酒店网站
  • 房地产网站建设策划方案网站建设教程简笔画
  • 3d室内设计软件wordpress本地优化加速版
  • 南京高新区规划建设局网站石家庄哪里做网站比较好
  • 免费培训课程网站优化的方式
  • 做网站要固定电话在家自己做网站
  • 招聘网站开发视频新手如何做网站维护
  • flash 网站欣赏国外做的比较好的网站有哪些
  • 推广一个网站需要什么官网首页设计
  • 淘宝建设网站的理由企业官网建设哪家好
  • 青岛网站推wordpress主题切换
  • 天元建设集团有限公司资质郑州网站seo推广
  • 免费网站后台管理系统模板下载百度网盘app下载安装
  • 开封网站建设培训郑州高端网站建设哪家好
  • 东莞哪家做网站很有名的公司即墨专业医院网站制作公司
  • 做面食网站china cd wordpress
  • 门户网站 营销优秀建筑模型案例作品