谷粒商城实战笔记-211~212-商城业务-认证服务-环境搭建

news2024/9/24 13:19:18

这一部分的主要内容是开发商城的认证服务。

文章目录

  • 一,211-商城业务-认证服务-环境搭建
    • 1,创建模块
    • 2,引入相关依赖
    • 3,各种配置
      • 3.1 注册中心配置
      • 3.2 启用注册中心
      • 3.3 本节域名配置
    • 4,页面模板
      • 4.1 html模板
      • 4.2 静态资源上传到nginx
    • 5,网关配置
  • 二,212-商城业务-认证服务-好玩的验证码倒计时
    • 1,首页跳转到登录和注册页面
    • 2,模板配置简化
    • 3,验证码重发倒计时

一,211-商城业务-认证服务-环境搭建

1,创建模块

创建一个新的模块gulimall-auth-server,引入如下4个依赖:

  • 开发工具DevTools
  • 开发工具Lombok
  • SpringWeb
  • 模板引擎Thymeleaf
    在这里插入图片描述

2,引入相关依赖

<dependency>
            <groupId>com.atguigu.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

引入common依赖,注意要排除对mybatis的依赖,因为这个模块需要操作我们自己的数据库。

3,各种配置

3.1 注册中心配置

server.port=20000
spring.application.name=gulimall-auth-server
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

3.2 启用注册中心

启动类上加注解@EnableDiscoveryClient

在这里插入图片描述

3.3 本节域名配置

后续使用auth.gulimall.com访问服务,所以要配置域名映射。
在这里插入图片描述

4,页面模板

4.1 html模板

将课程提供的登录相关的两个页面模板复制到资源目录下的templates目录。

4.2 静态资源上传到nginx

静态资源上传到nginxhtml/loginhtml/reg目录下。

在这里插入图片描述

5,网关配置

网关将域名为auth.gulimall.com的请求转发到登录服务。

        - id: auth-server-route
          uri: lb://gulimall-auth-server
          predicates:
            - Host=auth.gulimall.com

二,212-商城业务-认证服务-好玩的验证码倒计时

1,首页跳转到登录和注册页面

		  <li>
            <a href="http://auth.gulimall.com/login.html">你好,请登录</a>
          </li>
          <li>
            <a href="http://auth.gulimall.com/reg.html" class="li_2">免费注册</a>
          </li>

在这里插入图片描述

2,模板配置简化

使用了Thymeleaf模板引擎,访问页面时,需要提供一个接口指定对应的模板,如下所示。

在这里插入图片描述

这种配置接口非常简单,只是指定了一个目标,有很多冗余代码,最好是可以通过配置的方式。

可以通过实现WebMvcConfigurer 接口,简单配置即可实现指定模板的功能。

@Configuration
public class GulimallWebConfig implements WebMvcConfigurer {

    /**·
     * 视图映射:发送一个请求,直接跳转到一个页面
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login.html").setViewName("login");
        registry.addViewController("/reg.html").setViewName("reg");
    }
}

3,验证码重发倒计时

注册时,需要使用到发送验证码的功能,为了防止客户频繁重复点击发生验证码,设置下一次发送必须在60秒之后,开发一个倒计时功能实现这个需求。

在这里插入图片描述
这个功能的实现只需要前端使用JS的setTimeout函数即可实现。

	function timeoutChangeStyle() {
    	$("#sendCode").attr("class","disabled");
    	if(num == 0) {
			$("#sendCode").text("发送验证码");
			num = 60;
			$("#sendCode").attr("class","");
		} else {
			var str = num + "s 后再次发送";
			$("#sendCode").text(str);
			setTimeout("timeoutChangeStyle()",1000);
		}
		num --;
	}

代码定义了一个名为timeoutChangeStyle的函数,其主要功能是控制一个HTML元素(ID为sendCode)的文字显示和禁用状态,用于实现发送验证码后的倒计时功能。

核心功能和函数说明如下:

  1. 函数名称:

    • timeoutChangeStyle: 这个函数负责更新按钮的文字和禁用状态。
  2. 功能描述:

    • 当按钮第一次被点击时,按钮文字会变为“发送验证码”,并且按钮会被禁用(即添加disabled类),开始倒计时。
    • 倒计时从60秒开始,每过一秒按钮的文字会更新为剩余秒数加上“s 后再次发送”这样的格式。
    • 每次更新后,函数会通过setTimeout安排自身在下一秒再次执行,直到倒计时结束。
    • 当倒计时结束后,按钮的文字恢复为“发送验证码”,按钮的禁用状态也会解除(移除disabled类)。
  3. 变量说明:

    • num: 一个全局变量(虽然在代码片段中没有声明为全局,但在实际使用中应该在外部定义为全局变量),用于记录剩余秒数。初始值设为0,当按钮首次被点击时会被重置为60。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python---数据可视化篇

目录 1.matplotlib简介 2.安装并且导入对应的模块 3.设置中文字体 4.创建画布 5.绘制折线图 6.对于折线图的美化 7.散点图的绘制 8.双y轴叠加图 9.簇形柱状图 10.百分比堆积柱状图 11.绘制多个子图&#xff08;一个画布上面&#xff09; 1.matplotlib简介 matplotl…

C盘扩容遇到恢复分区怎么办?

文章目录 1.0 问题描述2.0 了解恢复分区是啥3.0 恢复分区可以删除吗&#xff1f;&#xff08;需确认好&#xff01;&#xff09;4.0 删除恢复分区&#xff08;需要谨慎操作&#xff09;4.0.1 管理员打开CMD4.0.2 查看磁盘 给C盘扩容 1.0 问题描述 想要给C盘扩容&#xff0c;但…

Hyper-v ubuntu22 上外网方法

1. 前置步骤 步骤一&#xff0c;首先新建一个虚拟网络交换机&#xff0c;我这里名称为vEthernet (hyper-v-ubuntu)&#xff0c;选【内部网络】 步骤二&#xff0c; 在网络设置中&#xff0c;找到可以上网的网卡&#xff0c;这里我用的是无线网卡WLAN&#xff0c;设置共享连接…

【SpringBoot】SpringBoot的运行原理

SpringBoot项目中都有一个如下的启动类。 SpringBootApplication public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);} }其中SpringBootApplication是这个启动类的核心注解&#xff0c;在它下面又有三个子…

Spring Cloud Gateway动态路由及路由插件实现方案

前言 sim-framework之前使用Zuul作为网关&#xff0c;结合Eureka实现了动态路由及灰度路由&#xff0c;但是存在以下几个问题&#xff1a; 性能问题&#xff1a;Zuul基于线程隔离&#xff0c;一个请求需要一个线程处理&#xff0c;而Gateway基于事件驱动&#xff0c;少量线程…

Go项目布局

Go项目布局&#xff0c;自举语言&#xff0c;源码是靠Go自己实现的 所以Go源码可以参考作为项目布局 源码放在src目录下 cmd放main internal目录下放不希望外部访问的代码&#xff08;业务&#xff09; common目录下可以放直接 import外部访问的 etc放配置文件yaml

第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队

关联比赛: 第二届海南大数据创新应用大赛 - 智能算法赛 第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略 首先很幸运能拿到这次初赛冠军&#xff0c;本着积极学习和提升自我的态度&#xff0c;团队成员通力合作是获胜关键&#xff0c;再次感谢。 赛题背景分析和理解 …

gpio的使用----->4412的裸机的使用(第三节)

这一节主要是 4412 的裸机的使用 0 4412 的硬件原理图 数据手册 然后是数据手册的解析&#xff1a; 每一组都有这几个 寄存器。 需要注意&#xff1a; 1、 4412 的中断是 与输入&#xff0c;输出在同一个级别的&#xff0c;与stm32不同。 2、 我是在uboot 上进行编程的&#x…

重头开始嵌入式第二十二天(Linux系统编程 进程)

进程 目录 进程 1.进程的概念 2.PCB&#xff08;process control block&#xff09; 3.进程和程序有什么区别&#xff1f; 4.进程的内存分布 5.进程的分类 守护进程 6.进程的作用 7.进程的状态 8.进程的调度 9.查询进程的相关指令 1.ps aux 2.top 3.kill和killa…

12 Text 组件

12 Text 组件 Tkinter 是 Python 的标准 GUI 库&#xff0c;而 Text 组件是其中用于显示和编辑多行文本的控件。以下是对 Text 组件的详细说明和一个使用案例。 Text 组件属性 基本属性 width: 文本框的宽度&#xff0c;通常以字符数为单位。height: 文本框的高度&#xff…

亚世光电:消费电子年度表演

机圈风云再起&#xff0c;消费电子乘风而起&#xff1f; 今天我们来聊——亚世光电 最近&#xff0c;华为mate60突然降价&#xff0c;被大家怀疑是为新品上市做准备&#xff0c;算算时间&#xff0c;下半年的消费电子大战也即将拉开帷幕&#xff0c;而亚世光电所在的光电显示领…

sklearn-线性回归

文章目录 一、sklearn-线性回归介绍二、线性回归1.一元线性回归2.多元线性回归模型3.最小二乘法 三、一元线性回归应用1.导入库2.绘制散点图3.建立回归模型并进行训练4.模型评估与数据查看5.模型测试 四、多元线性回归应用1.导入库2.计算相关性3.数据预处理4.训练评估模型5.模型…

iOS 18.1 Beta 2评测:新变化与体验升级

苹果公司近日向开发者推送了iOS 18.1 Beta 2更新&#xff0c;这一版本基于beta1版本进行多个方面优化和改进&#xff0c;为用户带来了更加流畅和个性化的使用体验。作为一位热衷于体验新系统的用户&#xff0c;小编也是第一时间升级了Beta 2版本&#xff0c;并对其进行了全面的…

Java二十三种设计模式-状态模式(20/23)

本文深入探讨了状态模式&#xff0c;一种允许对象根据其内部状态变化而改变行为的软件设计模式。文章从定义、组成部分、实现方式、使用场景、优缺点分析、与其他模式的比较&#xff0c;到最佳实践和建议&#xff0c;全面介绍了状态模式的各个方面。通过Java语言的实现示例和实…

2024前端面试题-篇章一(个人向)

1.vue2生命周期&#xff08;省略&#xff09; 2.vue3生命周期&#xff08;省略&#xff09; 3.vue2页面生命周期与组件生命周期执行顺序&#xff1a; 一般是 页面先创建&#xff0c;然后准备再准备挂载&#xff0c;挂载的时候发现有组件再执行组件的生命周期&#xff0c;组件…

数字影像技术是如何改变我们看待世界的方式呢?

在当今的科技时代&#xff0c;数字影像技术正以惊人的速度改变着我们的生活和视觉体验。那么&#xff0c;什么是数字影像技术呢&#xff1f; 数字影像技术是指通过数字化手段对图像和视频进行获取、处理、存储、传输和展示的一系列技术。 它利用各种数字设备&#xff0c;如数…

msf+proxychains组合搭建socks5隧道 | 内网穿透

实验环境 网络拓扑&#xff1a; kali&#xff1a; VMnet1&#xff08;公网&#xff09;192.168.52.134 win10&#xff1a; VMnet1&#xff08;公网&#xff09;192.168.52.135VMnet2&#xff08;内网&#xff09;192.168.72.133 win2008&#xff1a; VMnet2&#xff08…

【数据结构初阶】二叉树--基本概念

hello&#xff01; 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …

转行到大模型,完整版攻略从大模型零基础到大模型精通,我是这样过来的

在当今这个日新月异的时代&#xff0c;技术的更新迭代速度远超我们的想象。对于那些渴望在职业生涯中寻求新挑战的人来说&#xff0c;转向人工智能领域&#xff0c;尤其是投身于大规模语言模型的研究与开发&#xff0c;无疑是一个充满机遇的选择。本文将为您揭示如何从零开始&a…

阿里十万卡训练集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model Training

本博客的视频教程在这&#xff1a; 2.2阿里十万卡集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model_哔哩哔哩_bilibili 一、大模型训练的核心问题 1.1 流量模式的问题 大语言模型训练的流量模式问题可参考这个&#xff1a; ECMP等价…