首页 > 其他分享 >【项目学习】谷粒商城学习记录7 - 认证服务

【项目学习】谷粒商城学习记录7 - 认证服务

时间:2023-12-14 14:56:53浏览次数:20  
标签:num 认证 学习 html 谷粒 gulimall login reg 页面

【项目学习】谷粒商城学习记录7 - 认证服务


一、环境搭建 & 准备工作

1. 创建新模块


2. 配置依赖 pom.xml文件

  • 引入common模块,排除gulimall-common包的mybatis-plus
  • 将模块添加到注册中心
    • 添加配置信息
    • 添加服务发现注解
  • 启动类添加远程调用注解 @EnableFeignClients
  • 测试:服务成功加入nacos
  • 关闭thtmeleaf缓存
    spring.thymeleaf.cache=false
    

3. 静态页面搭建

  • 将注册页面和登录页面放在服务资源目录下
    • 登录页面改名login.html, 注册页面改名reg.html
  • host文件新增域名地址
  • 登录、注册页面动静分离,将静态资源移到nginx下
  • 修改页面内的路径



4. 网关配置

  • gateway配置文件中添加
    # 认证服务
    - id: gulimall_auth_route
      uri: lb://gulimall-auth-server
      predicates:
        - Host=auth.gulimall.com
    

5. 网页转发

  • 首先修改首页和登录页,注册页的相互跳转地址

    • login.html页面修改
    • gulimall.html首页页面修改
  • 创建controller.LoginController.class

    @Controller
    public class LoginController {
    
        @GetMapping("/login.html")
        public String loginPage() {
            return "login";
        }
    
        @GetMapping("/reg.html")
        public String regPage() {
            return "reg";
        }
    }
    
  • 修改登录页跳转注册页地址

  • 修改注册页跳转登录页地址

5. 发送验证码后倒计时

  • 首先将发送键写成a标签,并设置id
  • 编写js代码
    $(function() {
    	$("#sendCode").click(function(){
    		//1、给指定手机号发送验证码
    		//2、倒计时
    		if($(this).hasClass("disabled")) {
    			//正在倒计时
    		} else {
    			timeoutChangeStyle();
    		}
    	})
    })
    
    var num = 60;
    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 --;
    }
    

6. 实现页面渲染

  • 创建config.GulimallWebConfig.class
    public class GulimallWebConfig implements WebMvcConfigurer {
    
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/login.html").setViewName("login");
            registry.addViewController("/reg.html").setViewName("reg");
        }
    }
    

7. 配置邮箱验证码(使用的qq邮箱)

  • 首先开启邮箱POP3/IMAP/SMTP/Exchange/CardDAV 服务,并获得授权码
  • 在gulimall-third-party服务中添加maven依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
  • 添加配置信息
    spring:
      mail:
        host: smtp.qq.com
        username: qq号@qq.com
        password: 授权码
        default-encoding: utf-8
    

标签:num,认证,学习,html,谷粒,gulimall,login,reg,页面
From: https://www.cnblogs.com/A-sc/p/17900536.html

相关文章

  • 【Python】人工智能-机器学习——不调库手撕深度网络分类问题
    1.作业内容描述1.1背景数据集大小150该数据有4个属性,分别如下Sepal.Length:花萼长度(cm)Sepal.Width:花萼宽度单位(cm)Petal.Length:花瓣长度(cm)Petal.Width:花瓣宽度(cm)category:类别(IrisSetosa\IrisVersicolour\IrisVirginica)1.2要求在不调用机器学习库的情......
  • php深化学习(二)
    为了提高一定效率,我需要一些工具的工具比如composer,vscode,phpstudy,宝塔控制面板composer:是php专门管理包工具。安装看https://docs.phpcomposer.com/00-intro.html教程就行。composer不光是管理工具,还能自动构建加载器,是定制个人框架的必备的。vscode:一个开源的自己自定义的......
  • 2023年12月北京/西安/东莞/深圳NPDP产品经理认证招生
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。【认证机构】产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业或组织......
  • 【Python】人工智能-机器学习——不调库手撕贝叶斯分类问题
    1.作业内容描述1.1背景数据集大小150该数据有4个属性,分别如下Sepal.Length:花萼长度(cm)Sepal.Width:花萼宽度单位(cm)Petal.Length:花瓣长度(cm)Petal.Width:花瓣宽度(cm)category:类别(IrisSetosa\IrisVersicolour\IrisVirginica)1.2要求在不调用机器学习库的情......
  • Rong晔大佬教程学习(5):ALU单元设计
    之前我们提到,alu一共有两个输入,通过前几章的指令部分,我们可以发现有以下四种情况: 注意:虽然上面有四种情况,但由于本项目的U型指令只实现了lui,也就是立即数左移12位,所以把这一类归为寄存器和立即数,而不是第四种立即数和pc,这个是auipc指令实现的功能。所以下面代码中一共......
  • JVM虚拟机系统性学习-运行时数据区(堆)
    运行时数据区JVM由三部分组成:类加载系统、运行时数据区、执行引擎下边讲一下运行时数据区中的构成根据线程的使用情况分为两类:线程独享(此区域不需要垃圾回收)虚拟机栈、本地方法栈、程序计数器线程共享(数据存储区域,此区域需要垃圾回收)存储类的静态数据和对象数据堆和方法区堆Java......
  • miniconda学习
    安装minicondaminiconda可以到它的官网https://docs.conda.io/en/latest/miniconda.html下载,也可以在清华大学提供的镜像站点(地址如下)下载,速度很快。https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/当然,如果你实在需要大而全的Anaconda,可以用以下网址下载:https://mirro......
  • Rong晔大佬教程学习(4):寄存器堆和立即数扩展
    在第一节的设计结构图中,我们可以看到,ctrl.v模块译码后,就可以得到我们实际运算所需要的数据,有两种:1.寄存器值,通过译码后得到的地址在寄存器堆中读出;2.立即数值,在译码后进行扩展得到的完整的立即数值。首先来看寄存器堆,一共有32个寄存器: 接口名称表示每个寄存器的功......
  • 深度学习3D网络---PointNet++
    PointNet++地址:http://stanford.edu/~rqi/pointnet2/1.两者主要不同点考虑到PointNet特征提取时只考虑单点,不能很好的表示局部结构==>PointNet++引入了sampling&grouping,考虑局部领域特征PointNet中globalfeature直接由maxpool得到,容易造成信息丢失==>PointNet++采......
  • 深度学习笔记4:在卷积基上添加数据增强代码块和分类器
    特征提取的另一种方式是将原有模型与一个新的密集分类器相连接,以构建一个新的模型,然后对整个模型进行端到端的训练。这种方法在输入数据上进行整体训练,使模型能够更好地适应数据特性并提取更有效的特征。通过这种方式,模型的性能可以得到进一步提高,同时也能更好地捕捉到数据中......