mogodb闪退
各种插件和启动
mall文档
先要敲定技术架构版本才能编写代码,否则可能全部重来。
1.先技术2.再业务
先给请求加以及生成的token
oauth2源码分析
oauth服务器配置
服务器这里加载userservise
生成token都在配置里
除了aouth的服务器
第一行代码就是获取token
第二行获取token的其他信息。
单点登录,在客户端方面配置,不是在服务器配置
服务端认证中心配置
网关搭建和oauth2的配合使用
资源服务配置
第一行鉴权类
测试获取
限流
监控
配置客户端
Docker环境部署,虚拟机
- 使用虚拟机安装CentOS7.6请参考:虚拟机安装及使用Linux,看这一篇就够了;
- Docker环境的安装请参考:开发者必备Docker命令;
- 本项目Docker镜像构建请参考:使用Maven插件为SpringBoot应用构建Docker镜像;
- 本项目在Docker容器下的部署请参考:mall-swarm在Linux环境下的部署(基于Docker容器);
- 本项目使用Jenkins自动化部署请参考:微服务架构下的自动化部署,使用Jenkins来实现。
bug:mysql版本要对应上
redis验证码
redis实现类
先在拦截器放行,不用token登录
调用业务层
package com.macro.mall.tiny.service.impl;
import com.macro.mall.tiny.common.api.CommonResult;
import com.macro.mall.tiny.service.RedisService;
import com.macro.mall.tiny.service.UmsMemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Random;
/**
* 会员管理Service实现类
* Created by macro on 2018/8/3.
*/
@Service
public class UmsMemberServiceImpl implements UmsMemberService {
@Autowired
private RedisService redisService;
@Value("${redis.key.prefix.authCode}")
private String REDIS_KEY_PREFIX_AUTH_CODE;
@Value("${redis.key.expire.authCode}")
private Long AUTH_CODE_EXPIRE_SECONDS;
@Override
public CommonResult generateAuthCode(String telephone) {
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 6; i++) {
sb.append(random.nextInt(10));
}
//验证码绑定手机号并存储到redis
redisService.set(REDIS_KEY_PREFIX_AUTH_CODE + telephone, sb.toString());
redisService.expire(REDIS_KEY_PREFIX_AUTH_CODE + telephone, AUTH_CODE_EXPIRE_SECONDS);
return CommonResult.success(sb.toString(), "获取验证码成功");
}
//对输入的验证码进行校验
@Override
public CommonResult verifyAuthCode(String telephone, String authCode) {
if (StringUtils.isEmpty(authCode)) {
return CommonResult.failed("请输入验证码");
}
String realAuthCode = redisService.get(REDIS_KEY_PREFIX_AUTH_CODE + telephone);
boolean result = authCode.equals(realAuthCode);
if (result) {
return CommonResult.success(null, "验证码校验成功");
} else {
return CommonResult.failed("验证码不正确");
}
}
}
定时器
配置类开启定时
@Scheduled(cron = “0 0/10 * ? * ?”)注解加在哪个方法,哪个方法就会定时。
Swagger
演示地址: http://localhost:8086/swagger-ui.html
MangoDB非关系型数据库
业务学习:各种管理
主表产品表,外表种类表。
主外键,在一个表中有,另一个表中可能没有。也可以进行箭头连接。一般查询从主表查到次表。
关系表箭头指向两个表
后台管理系统
角色管理
菜单管理
用户管理
资源管理
AOP实现日志
在组件里
运行项目并访问:http://localhost:8080/swagger-ui.html
跨域
springsecurity+jwt
返回一个bean