搜索引擎模块设计与实现--业务模块

搜索引擎模块设计与实现–业务模块

一、设计目标

* 简单实现搜索引擎界面
* 在后端实现搜索引擎 登录 注册 销户 退出功能
* 实现收藏功能的存储

二、设计方案

从 视图层 到 控制层 到 业务层 到 持久层 逐层讲解

视图层

  • 导航
  • 结果集
  • 相关搜索
  • 分页操作
  • 收藏功能
  • 登录 注册 销户 退出
  • 内容展示
导航

主要包括 搜索框 搜索框的键盘监听事件 关键词过滤器 时间过滤器 收藏夹 登录功能

结果集

主要将 后端返回的标题与内容 进行初步展示

相关搜索

通过输入框的内容展示 10条与搜索框内容 有极高关联度的搜索词

分页操作

通过每次分页设置不同页面参数 返回结果集

收藏功能
  • 当用户未登录时 无法使用
  • 当用户鼠标移至标签会显示收藏夹内容
登录 注册 销户 退出

登录 注册 销户 通过另外一个界面 来操作

登录成功会从 控制层 获取 token 放在本地中

销户 通过删除 本地的token 并发送请求给控制层

退出 通过删除 本地的token实现

内容展示

点击某个结果集 展示全部效果

控制层

  • 控制 注册 登录 销户 退出
  • 控制 收藏夹 简单的增删改查

在这里插入图片描述

注册
* 获取业务层 返回的验证码用于判断 用户输入的验证码是否正确
* 获取业务层 返回的账号 1.返回给视图层 2.用于封装用户信息
* 封装注册信息 
* 将注册信息推送至业务层
登录
* 向业务层发送账号 密码 用于判断是否正确
* 获取判断结果 1.正确 获取用户名封装的token 2.错误 向视图层报错
销户
  • 向业务层发送账号 密码 用于判断是否正确
  • 获取判断结果 1. 正确 向业务层 发送销毁执行 2.错误 向视图层报错
收藏夹
  • 向业务层获取所有收藏夹名称 以及每一个收藏夹的内容
  • 增加 删除 收藏夹
  • 增加 删除 收藏夹内容

业务层

  • 登录
  • 注册
  • 销户
  • 收藏夹增删改查(简单实现)
注册
  • 邮箱发送验证码 并进行验证 实现实名制
  • 通过pbkdf2算法对密码进行加密
  • 生成账号 为后续登录提供便捷功能
登录
  • 通过pbkdf2算法的比较 判断密码是否正确
  • 若正确 通过jwt 将用户名生成 token 返回给控制层
  • token 可用于后续收藏功能的检测
销户
* 通过pbkdf2算法的比较 判断密码是否正确
*  若正确 向持久层发送请求 1.删除 mysql中 账户信息 2. 删除redis中 收藏夹信息
收藏功能
* 通过redis 将收藏夹内容放在缓存中 加快执行效率
* 增加收藏夹 通过与持久层进行判断 是否有该收藏夹 没有即增加 有则报错(增加收藏内容同理)
* 删除收藏夹 通过与持久层进行判断 是否有该收藏夹 没有即报错 有则删除(删除收藏内容同理)

三、 具体实现

(简单流程已经在设计方案中进行说明 下面具体说说碰到的思考点与其实现)

登录 注册 销户 退出 这一套鉴权机制 是有很多地方去考虑的。

从一开始的设计仅仅只是 一个简单的系统 但是密码的裸奔 登录验证 登录的保持 防止二次登录 等等问题都需要去解决

关于密码的裸奔

决定采用 pbkdf2算法

通过伪随机函数不断的加密 将随机盐与密码进行 运算 实现 整个过程

然后 盐值+生成串 生成密码

在判断密码时 进行盐值获取 并将输入的密码进行加密 判断加密后的密码是否与真正的密码加密后一样

关于登录

最主要的机制 就是token吧 每次登录的时候 向视图层返回一个用户名做成的token

当二次登录时 检测是否有token的存在 若有则 组织其再次登录

只要token未过期 则一直处于登录状态中

通过控制层 可知 jwt(token的具体实现方法) 已经作为一个中间件来使用 通过这个来获取token中的用户名

关于收藏夹

能说的点在于 使用redis库吧 通过redis进行收藏夹的管理 将收藏夹存放在缓存中 大大的提高了效率。

总结

感觉我还是很水的 做的业务 也没有什么亮点 一切都好像理所应当的 一切都好像简简单单 犹如地上的一毛钱 或许真的不会有人在意吧。 真的很感谢 这次在青训营的机会 让我知道了自己渺小 继续努力吧没什么好说的。很感谢在组里遇到的学长 帮了我很多 让我知道了如何更好的学习 更有目标的去努力。 或许再过一年 我就不再这么弱小了呢 ,加油吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值