1.请求调用流程
如http://localhost:8803/static/js/2.0195d7180dc783c3fe99.js这种静态资源,采用http的发送到本地8803端口的静态资源请求,而nginx配置的监听8801、8802、8803,所以请求走到nginx,nginx的admin配置文件
upstream heima-admin-gateway{server localhost:6001;
}server {listen 8803;location / {root html/toutiao/admin-web/;index index.html;}location ~/admin_gateway/(.*) {proxy_pass http://heima-admin-gateway/$1;proxy_set_header HOST $host; # 不改变源请求头的值proxy_pass_request_body on; #开启获取请求体proxy_pass_request_headers on; #开启获取请求头proxy_set_header X-Real-IP $remote_addr; # 记录真实发出请求的客户端IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理信息}
}
可以发现未特殊声明的都走到location /,也就是转到html/toutiao/admin-web/目录下
静态资源都在这个下面。也就是静态资源nginx自己就处理了
另外如登录请求是个动态资源请求
还是由上面的配置文件发现admin_gateway都转到了 upstream heima-admin-gateway{
server localhost:6001;
}
6001是网关,打开网关的application.yml配置文件发现会把admin也过滤掉,
此时就可以与Controller的各种mapping对应了
2.搭建微服务,分五个步骤
1.创建模块,引入Maven依赖 2. 加入启动类 3配置文件 4.用mp生成基础代码 5.编写业务代码
3. 搭建管理端微服务
坑点是idea的创建模块的父工程有时是最顶层而不是你需要的上一层,一旦选错很麻烦。
3.1.登录的service层代码
//1. 根据name查询用户信息, 如果不存在,直接报错[主键查询selectById 条件查询 selectList]
//2. 密码比对,如果错误就返回提示
//3.一旦都没问题,代表登录成功;创建token,token有效载荷:非敏感唯一性id小
//4.组装结果返回
3.2 搭网关
在heima-leadnews-gateway下添加heima-leadnews-admin-gateway模块,添加pom文件
添加jwt校验
思路分析:
-
用户进入网关开始登陆,网关过滤器进行判断,如果是登录,则路由到后台管理微服务进行登录
-
用户登录成功,后台管理微服务签发JWT TOKEN信息返回给用户
-
用户再次进入网关开始访问,网关过滤器接收用户携带的TOKEN
-
网关过滤器解析TOKEN ,判断是否有权限,如果有,则放行,如果没有则返回未认证错误
4. 自媒体微服务
步骤都差不多,泛陈可善