当前位置:   article > 正文

仿牛客网社区项目总结 第七章_仿牛客网项目

仿牛客网项目

学习仿牛客网社区项目

代码&资源

Spring Security

什么是Spring Security?

参考文章

Spring Security是一款强大的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能

它的核心是一组过滤器链,不同的功能经由不同的过滤器。

为什么京东下单和付款不需要重复登录?

这里就要引入一个概念:单点登录。

就是在一个多应用系统中,只要在其中一个系统上登录之后,不需要在其它系统上登录也可以访问其内容。举个例子,京东那么复杂的系统肯定不会是单体结构,必然是微服务架构,比如订单功能是一个系统,交易是一个系统…那么我在下订单的时候登录了,付钱难道还需要再登录一次吗,如果是这样,用户体验也太差了吧。实现的流程就是我在下单的时候系统发现我没登录就让我登录,登录完了之后系统返回给我一个Token,就类似于身份证的东西;然后我想去付钱的时候就把Token再传到交易系统中,然后交易系统验证一下Token就知道是谁了,就不需要再让我登录一次。

什么是Token?

上面提到的Token就是JWT(JSON Web Token),是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。

黑客伪造Token怎么办?

JWT在加密解密的时候会用到同一个密钥,这将会带来一个弊端,如果被黑客知道了密钥的内容,那么他就可以去伪造Token了。所以为了安全,我们可以使用非对称加密算法RSA

创建两个密钥,公钥和私钥。公钥公开,私钥私有。用公钥加密报文,只能通过私钥解密报文,这样就算报文被截获,也无法破译。

在项目中的应用?

  1. 三种用户类型:用户,管理员,版主。将主要界面授权给三者;置顶和加精授权给版主;删帖和访问数据页面授权给管理员。权限不够时设置提醒。
  2. 在拦截器中编写用户身份认证的逻辑,并存入SecurityContext,以便于Security进行授权

CSRF攻击

什么是CSRF攻击?

病毒网站窃取浏览器的cookie,获取用户凭证ticket,用其模拟用户向服务器提交表单,从而获利。
在这里插入图片描述

攻击的应对方法?

服务器发送tocken给浏览器,再次收到请求后检查tocken,此信息病毒网站无法获取。
在这里插入图片描述

Quartz

什么是Quartz?

我们系统中创建了 N 个任务,每个任务都有指定的时间进行执行,而这种多任务的执行策略就是任务调度。

Quartz是一款开源的“任务调度库”

Quartz的体系结构是什么?

一是执行的任务,二是触发器(可以理解为设置闹钟),三是调度器。连在一起就是我们使用调度器将任务和触发器绑定在一起执行,以达到在指定的时间点执行或循环执行任务。

参考文章1

参考文章2

在这里插入图片描述

  1. 任务 Job

我们想要调度的任务都必须实现org.quartz.job接口,然后实现接口中定义的execute()方法即可

  1. 触发器 Trigger

Trigger 作为执行任务的调度器。我们如果想要凌晨1点执行备份数据的任务,那么 Trigger 就会设置凌晨1点执行该任务。

  1. 调度器 Scheduler

Scheduler 为任务的调度器,它会将任务 Job 及触发器 Trigger 整合起来,负责基于 Trigger 设定的时间来执行 Job

Quartz在项目中的应用?

用于更新帖子分数,用Elasticsearch进行搜索时,该分数作为一个排序字段。计算方法:加精75,评论10,点赞2

循环执行任务,每五分钟执行一次。

Caffeine

什么是Caffeine?

Caffeine是一款本地缓存组件,Redis是一款分布式缓存组件,项目中两个都用到了,二者并不冲突。Caffeine基于LRU算法实现,设置多种缓存策略。

为什么要使用Caffeine?

Redis是分布式的,需要网络开销,本地缓存不用。对于一些秒杀系统或数据量小的缓存,用Caffeine。

项目中的应用?

将帖子列表和帖子总数放入本地缓存

Nginx

8分钟带你深入浅出搞懂Nginx

什么是Nginx?

Nginx是一款轻量级的Web服务器、反向代理服务器,内存占用少,启动快,高并发。

什么是正向代理?

终于有人把正向代理和反向代理解释的明明白白了!

一般情况下,我们通过内网无法访问github,这时需要连接VPN(虚拟专用网络)再进行访问,这个过程是正向代理。

代理的对象是客户端,代理过程对服务器透明。

作用:

  1. 突破访问限制
  2. 提高访问速度
  3. 隐藏客户端真实IP

什么是反向代理?

客户端访问的是,拥有真正服务器部分信息的代理服务器。

代理的对象是服务器端,代理过程对客户端透明。

  1. 隐藏服务器真实IP
  2. 负载均衡
  3. 提高访问速度
  4. 提供安全保障

项目中的应用?

在java后端代码中并未体现

CDN

什么是CDN?

到底什么是CDN?

内容分发网络。将目标服务器的资源分发到世界各地,距离用户群体更近,提高了访问速度。

CDN与镜像有什么区别?

镜像是对完整内容的复制,CDN是智能化缓存部分内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/774671
推荐阅读
相关标签
  

闽ICP备14008679号