旅游项目day03

这篇具有很好参考价值的文章主要介绍了旅游项目day03。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前端整合后端发短信接口

2. 注册功能

后端提供注册接口,接受前端传入的参数,创建新的用户对象,保存到数据库。

  • 接口设计:
    旅游项目day03,旅游

  • 实现步骤:

    1. 手机号码唯一性校验(后端一定要再次校验手机号唯一性):基于手机号查询是否已经存在该手机号,如果存在则返回异常。
    2. 从redis中获取验证码,与前端传入的验证码进行一致性校验,如果不一致则抛出异常
    3. 删除redis中的验证码
    4. 创建用户对象,填入参数并补充其它默认值
    5. 对密码进行加密
    6. 保存用户对象到数据库
  • 编码实现:

    1. controller

    2. service
      手机号码唯一性校验:
      旅游项目day03,旅游
      注意:旅游项目day03,旅游
      密码加密:使用md5加盐值进行加密
      Md5Utils.getMD5(password + phone);
      phone即充当盐,这是一个简单的实例,实际业务中可以散列,或者按照一定的规律进行增加复杂度,即密码安全性。

      整体业务:
      旅游项目day03,旅游
      统一异常处理:
      旅游项目day03,旅游
      旅游项目day03,旅游
      统一异常处理后的核心业务:
      旅游项目day03,旅游
      细节:
      对于redis中的key,由于其可能具有复用性,故可将其抽取成常量。

3. 登录实现

HTTP无状:不会记录之前请求的信息,每次请求都是独立的,请求之间不会相互影响。
  • Session登录
    收到用户名密码,后端进行校验,后端校验通过后,将用户存入Session,再访问其他接口时,判断Session中是否有对象,如果有,说明已经登录,反之未登录。
    加入Session后,HTTP协议还是无状态的吗?
    Session的原理:每个浏览器地依靠此访问Tomcat服务器的时候,会创建一个Session对象,并且生成一个唯一的SessionID,将SessionID返回给浏览器,浏览器将其存入Cookie中,之后该浏览器的每次访问都会携带SessionID,因此,Tomcat可以根据SessionID来知道谁是谁。**Tomcat服务变成了有状态的服务。**缺点是无法做横向扩展。
    旅游项目day03,旅游
  • 基于Token+Redis的登录方式
    前端传递用户名密码,后端校验通过以后,生成一盒token作为key,用户对象作为value存入Redis,并且将token返回给浏览器,浏览器将其存储在本地,之后每次发起请求时,将token携带在请求头中,基于token从Redis中获取,判断token是否有效。
    与Session登录的区别:将原先存储在Session的数据,存储在Redis中了,实现了分布式Session的共享。
    Session其实可以理解为一个抽象的概念,即浏览器与服务器的会话。
    这个时候,Tomcat仍然是无状态的服务。
    旅游项目day03,旅游
  • 新的登录方案
    既能实现Session访问的高效,又能不用考虑数据共享问题,保证服务/协议的无状态特性。
    方案:前端传递用户名密码给后端,后端校验通过后,生成一个唯一的token,以及将用户基础信息返回给前端,前端保存下来,之后只要用户传了token,就认为用户有登录。问题:token可能被伪造,无法确认token的有效性。
    只要能够实现后端生成的token,客户端用户收到后,无法改造,而且后端还有办法验证该token有效,且可以实现针对token实现过期机制,就可以采用这样的方案。
  • 基于JWT登录
JWT(JSON Web Tokens)是一种开放标准(RFC 7519),用于在两方之间安全地传输信息作为JSON对象。
这种信息传输可以被验证和信任,因为它是数字签名的。JWTs常用于身份验证和信息交换,特别是在Web应用程序中。

JWT的组成
一个JWT通常由三部分组成,分别是头部(Header)、有效载荷(Payload)和签名(Signature)。

1. 头部(Header):
   - 包含了用于处理令牌的类型(typ,通常是JWT)和签名或加密算法(alg,如HMAC SHA256或RSA)。

2. 有效载荷(Payload):
   - 包含所谓的“声明”(Claims),这些声明是关于实体(通常是用户)和其他数据的声明。
   - 有三种类型的声明:注册声明(如iss发行人、exp过期时间)、公共声明(通常自定义,如用户ID和用户名)和私有声明(双方之间协商的信息)。

3. 签名(Signature):
   - 用于验证消息在传输过程中未被篡改,并且,对于使用秘密密钥签名的令牌,可以验证发送者的身份。
   - 签名是使用头部指定的算法以及服务器存储的秘密(对于HMAC算法)或私钥(对于RSA和ECDSA)来生成的。

JWT的使用
在身份验证过程中,当用户成功登录后,服务器会创建一个JWT,并将其发送回用户。然后用户在随后的请求中将此令牌发送回服务器,以验证其身份并访问受保护的资源。

JWT的优势
- 无状态和可扩展性:JWT不需要在服务器上存储会话信息,因为令牌本身包含了所有必要的信息。这对于构建可扩展的应用程序特别有用。
- 跨语言支持:由于基于JSON格式,JWT可以被任何支持JSON的语言使用。
- 安全性:数字签名确保了在传输过程中令牌未被篡改。

注意事项
- JWT不应包含敏感数据,因为其有效载荷可以被解码(即使是有签名的,也只是防篡改,而不是加密)。
- 适当的安全措施应该用于处理JWT,特别是在使用公开/私有密钥对的情况下。

JWT因其简洁性和功能性,在现代Web应用程序中被广泛使用,特别是在实现无状态的API和单点登录(SSO)等场景中。

旅游项目day03,旅游

  • 编码:
    controller:
    旅游项目day03,旅游
    service:

    旅游项目day03,旅游文章来源地址https://www.toymoban.com/news/detail-806614.html

到了这里,关于旅游项目day03的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 旅游项目day09

    1.1 NoSQL 1.2 MongoDB简介 关系型数据库: MongoDB数据库: 1.3 MongoDB安装及配置 安装:官网下载压缩包,解压即可 配置:修改mongo.conf 启动:直接双击bin/目录下的启动文件 1.4 客户端 bin目录下的mongo.exe(不太方便) 使用navicat连接(要求版本高,且需要破解) 使用navicat,下载,安

    2024年01月23日
    浏览(45)
  • 旅游项目day08

    后端:实体类,列表,查看,审核 前端:目的地明细中-游记-带范围条件查询,游记首页,【扩展】游记添加/编辑,【扩展】添加游记时间没登录时给提示,【扩展】只有当前登录用户是游记作者时,才可以显式编辑按钮 1.1 游记表结构分析 找到游记相关的页面,寻找原型字

    2024年01月21日
    浏览(47)
  • 旅游项目day04

    封装用户登录对象, 在指定时间过期+ 后端如何知道a需要登录,b不需要登录? 注解。 一个区域下面包含多个目的地 数据库表: 1. 区域表 2. 目的地表 一对多的关系 区域表设计:id/名称/英文名/简介/排序/状态 目的地表设计:id/名称/英文名/简介/排序/状态/父id/区域id/封面图

    2024年01月19日
    浏览(63)
  • Java基于springboot开发的景点旅游项目

    演示视频 https://www.bilibili.com/video/BV1cj411Y7UK/?share_source=copy_webvd_source=11344bb73ef9b33550b8202d07ae139b 主要功能:用户可浏览搜索旅游景点(分为收费和免费景点),购票(支持多规格套餐购票),也可发布游记,评论。查看订单退款等(页面适配手机)。 角色:管理员+注册用户 技

    2024年02月05日
    浏览(61)
  • 【旅游景点项目日记 | 第二篇】基于Python中的Selenium爬取携程旅游网景点详细数据

    Gitee仓库地址:travel-server:景点旅游项目服务端 确保安装python3.x环境 以管理员身份打开cmd, 安装selenium、pymysql、datetime ,默认安装最新版即可 确保chrome安装对应版本的驱动 (将该驱动放在chrome安装路径下),用于控制chrome浏览器,并将路径添加到环境变量的Path变量中,如

    2024年04月13日
    浏览(55)
  • AI创业项目:AI旅游规划定制师

    在当前的旅游市场中,个性化旅游规划成为越来越多旅行者的需求。然而,现行的定制旅行服务主要依赖于人工定制师,这一模式面临着信息不透明、价格弹性大等挑战。定制师在客户与服务供应商之间掌握着信息差,依靠这一优势获得收益,而这种模式往往无法保证服务的

    2024年04月10日
    浏览(40)
  • 2.Python数据分析项目——旅游景点票价预测

    流程 具体操作 基本查看 查看缺失值、查看数值类型 预处理 缺失值处理(填充)拆分数据(获取有需要的值) 、统一数据格式 数据分析 groupby分组求最值数据、seaborn可视化 预测(RandomForestRegressor) 拆分数据集、建立模型、训练模型、预测、评估模型 数量查看:条形图 占

    2024年02月10日
    浏览(61)
  • 【网站项目】基于jsp的199旅游景点管理系统

    🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹 赠送计算机毕业设计600个选题excel文件,帮助大学选题。 赠送开题报告模板,帮助书写开题报告。 作者完整代码目录供你选择: 《Springboo

    2024年01月21日
    浏览(59)
  • 分享者 - 携程旅游创作者搬砖项目图文教程

    大家好!携程这个出行旅游平台相信大家都不陌生吧。 每天都有大量的旅客在里面浏览攻略,寻找灵感和旅游建议。 那么,我们的项目就是把一些优质的小红书平台上的旅游攻略或作品,经过处理后搬运到携程平台上发布。 这个项目如何操作呢? 其实,操作起来非常简单,

    2024年02月05日
    浏览(91)
  • 毕业设计——基于SSM+Mysql构建的完整在线旅游网站项目

    完整项目地址:https://download.csdn.net/download/lijunhcn/88430527 ### 1、主要功能 实现旅游网 2、主要知识点 (1)目标 (2)任务 (3)功能说明 主要功能概述 (4)数据库表 (5)功能操作 1.环境搭建 2.注册功能 去注册页面 a、页面—在header.jsp里面添加这个超链接 b、控制层—在Use

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包