简易版前后端整合:网关统一代理 + 前后端分离(个人学习)
前言
继续上篇文章接着整合项目,由于前面更改了上篇文章的部分配置,如果后面有哪点忘记说了,再回复
上篇文章:spring boot + gateway + nacos + jwt 项目搭建
vue-element-admin: 直接去官网用git拉下来就好了。
一、vue-element-admin 官网
官方才是权威:https://panjiachen.github.io/vue-element-admin-site/zh/
二、接下来要解决的问题
1.前后端跨域问题。
2.接口白名单设置
2.token生成
1.接着上篇文章写的后台代码
修改了网关 application.yml 配置文件,由后端处理跨域问题。
server:
port: 8900
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
password: nacos
username: nacos
gateway:
routes:
### 基于注册中心的路由策略
- id: login-server
#### 基于lb负载均衡形式转发,后面地址为注册中心的服务名称
uri: lb://login-server
### 匹配规则
predicates:
- Path=/api/**
filters:
# 转发请求时去掉1级前缀,eg:http://localhost:9999/login/test?token=111中间的member字段会被清掉
- StripPrefix=1
discovery:
# 路由访问方式:http://Gateway_HOST:Gateway_PORT/大写的serviceId/**,其中微服务应用名默认大写访问
locator:
#是否与服务发现组件进行结合,通过 serviceId(必须设置成大写) 转发到具体的服务实例。默认为false,设为true便开启通过服务中心的自动根据 serviceId 创建路由的功能。
enabled: true
# 允许通过模块名小写代理
lower-case-service-id: true
# 前后端的跨域处理
globalcors:
corsConfigurations:
'[/**]':
allowedHeaders: "*"
allowedOrigins: "*"
allowCredentials: true
allowedMethods:
- GET
- POST
- DELETE
- PUT
- OPTION
2.简易版用户模块
这里面写的有点问题,暂时不做修改。能跑就行,人和代码有一个能跑都行
@RequestMapping("/user")
@RestController
@AllArgsConstructor
public class LoginController {
private final UserService userService;
private final MyJWTUtil jwtUtil;
@PostMapping("/login")
public ResponseResult login(User user){
// 这里的 UserDetails 有问题,应该让自己写的 user 实体类去继承,因为需要jwt生成token时需要唯一 id
UserDetails byName = userService.findByName(user.getUserName());
if (byName == null) {
new ResponseResult(200, "没有该用户");
}
Map<String, Object> params = new HashMap<>();
params.put("username", byName.getUsername());
String token = jwtUtil