尚医通项目101-123:前台用户系统、登录注册、邮箱登录

开始时间:2022-05-30
课程链接:课程链接:【尚医通】

前端页面
在这里插入图片描述
需要完成医院等级、地区查询、医院列表、医院名称模糊查询等功能
按等级查询
请添加图片描述
按地区查询
请添加图片描述
模糊查询
并能跳转到具体详情页面
跳转到详情页
请添加图片描述

预约挂号

在这里插入图片描述

在这里插入图片描述
预约须知
在这里插入图片描述
代码我就不写了,可以看gitee上后端的第九次提交
以及前端的第九次提交

注意调bug的时候一定要前后端端口名一致
这一部分没有太多新知识点,主要还是在写之前类似的
还要看前端有没有配置好依赖
调出命令框,再切换找到对应位置,
输入命令

F:\编程学习\尚医通项目\前端代码\shangyitong-front-end-code\vue-admin-template-test>cd vue-admin-template-master

F:\编程学习\尚医通项目\前端代码\shangyitong-front-end-code\vue-admin-template-test\vue-admin-template-master>npm install

npm install

如果maven导包导不进去,去找到maven配置的位置,把下载的包先删除掉
再重新reload
在这里插入图片描述

nacos报错
在这里插入图片描述

nacos报错,我就重新开了一个nacos文件,重新解压,再启动

又有报错了

我将gitee上的代码拷贝到自己电脑上
跑后端代码都没问题,用swagger测试过,
但是前端死活拿不到数据
之前出现这个问题,是因为端口不匹配或者是参数不匹配,只要改好前后端对接的地方一致就行
这个错我也按照这个思路,发现不行
在这里插入图片描述
然后我测试了所有接口,在前端都没能响应
我又远程登录我的台式电脑,一一比对代码,发现也没问题
于是我测试了一下我的本机nacos服务
发现我自己启动的两个微服务都注册上去了
那哪里出问题了呢
我再去看前端,拷贝了之前的代码,新开了一个窗口,还是不行

但是我注意到,我本机电脑和工位电脑的idea显示其实略有不同
在这里插入图片描述
上面是本机

下面是工位
在这里插入图片描述
我当时估计可能这就是一个显示问题,也没放在心上

我现在来看正常启动下的F12里面有什么东西

在这里插入图片描述
在这里插入图片描述
然后看报错的preview里面
在这里插入图片描述
同学帮我分析,可能是网关配置问题
我就看了我网关配置的代码,也都是一模一样
maven包不知道导了多少次了还是不能解决
但我发现了我本机电脑的gateway配置文件是灰色的
个人电脑上的application.properties只有这个gateway是灰的,两个微服务都是叶子型
在这里插入图片描述
然后他让我看看网关,我说我看过啊,两个微服务都在
但是此时发现我的gateway服务是没有注册的,我之前没太在意这一点
我再看了看工位电脑,发现nacos里面是有gateway的
在这里插入图片描述
问题肯定就在这里,那么是为什么会注册不上去呢
我又想到跟刚刚叶子灰了有没有关系
我定睛一看,发现我叶子灰了的resources文件没有mark as resources
于是我mark了一下
果然,问题解决了,此时gateway通了
在这里插入图片描述

登录设置

1,登录采取弹出层的形式
2,登录方式:
(1)手机号码+手机验证码
(2)微信扫描
3,无注册界面,第一次登录根据手机号判断系统是否存在,如果不存在则自动注册
4,微信扫描登录成功必须绑定手机号码,即:第一次扫描成功后绑定手机号,以后登录扫描直接登录成功
5,网关统一判断登录状态,如何需要登录,页面弹出登录层

JWT

JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。
JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上,
JWT最重要的作用就是对 token信息的防伪作用。

一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。

运行时报错
JwtHelper测试

package com.bupt.yygh.common.helper;

import io.jsonwebtoken.*;
import org.springframework.util.StringUtils;

import java.util.Date;

public class JwtHelper {
   

    //过期时间
    private static long tokenExpiration = 24*60*60*1000;
    //签名秘钥
    private static String tokenSignKey = "123456";

    //根据参数生成token
    public static String createToken(Long userId, String userName) {
   
        String token = Jwts.builder()
                .setSubject("YYGH-USER")
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                .claim("userId", userId)
                .claim("userName", userName)
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                .compressWith(CompressionCodecs.GZIP)
                .compact();
        return token;
    }

    //根据token字符串得到用户id
    public static Long getUserId(String token) {
   
        if(StringUtils.isEmpty(token)) return null;

        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        Integer userId = (Integer)claims.get("userId");
        return userId.longValue();
    }

    //根据token字符串得到用户名称
    public static String getUserName(String token) {
   
        if(StringUtils.isEmpty(token)) return "";

        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        return (String)claims.get("userName");
    }

    public static void main(String[] args) {
   
        String token = JwtHelper.createToken(1L, "lucy");
        System.out.println(token);
        System.out.println(JwtHelper.getUserId(token));
        System.out.println(JwtHelper.getUserName(token));
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值