changgou-day08
- 目标
- 网关系统搭建
- 路由的配置
- 跨域的介绍
- 扩展(域名访问系统的原理)
- 搭建用户微服务
- 实现登录(解决方案:jwt)
- jwt的使用
1网关
网关就是一个微服务。用于统一解决 端口的额问题,跨域的问题,安全的问题,限流等问题。
2 搭建网关
1.创建工程 添加依赖 spring cloud gateway依赖
2.配置yml
3.启动类
3 跨域
``` 哪些场景是属于跨域: 不同的系统进行AJAX的请求的时候属于跨域的,跨域的请求浏览器一般是不被允许的。 1.www.jd.com——>www.taobao.com 跨域 2.localhost:8001 —->localhost:8002 跨域 3.www.jd.com:80—->www.jd.com:81 跨域 4.https —-> http 跨域。 域名相同,端口相同,协议相同 就不是跨域。 解决跨域的问题的解决方案:
- CORS的协议 (高版本的浏览器至少 IE10 google)
- 在服务端进行注解配置(相当配置了CORS的配置项)springmvc的注解 @CrossOrigin
- 通过在网关(spring cloud gateway)进行统一的配置
- 通过在网关(nginx里面进行配置CORS)
- JSONP的方式(了解) 利用JS的漏洞的实现跨域,而且只支持GET请求 不支持其他的请求。
1.路由 转发的规则 2.断言 转发请求的条件 3.过滤 转发请求额外处理<a name="hscvM"></a>
### 4.路由配置
输入用户名和密码发送请求给用户微服务 用户微服务接收到信息之后,从数据库查询数据 然后匹配 如果匹配成功登录成功。 返回登录成功即可 请求:/user/login GET/post 参数:username,password 返回值:result /true/false<a name="RjeO8"></a>
#### 4.1 host配置
![1609552618860.png](https://cdn.nlark.com/yuque/0/2021/png/12589476/1635910688095-0d845f84-5f46-42ed-aba5-0785aecb7c48.png#clientId=uf93059d0-142d-4&from=drop&id=u7a504147&margin=%5Bobject%20Object%5D&name=1609552618860.png&originHeight=724&originWidth=1698&originalType=binary&ratio=1&size=92503&status=done&style=none&taskId=u15ddfbf5-be13-4c0a-bb23-12aeff53c36)
<a name="qGZrq"></a>
### 5 用户直接登录(不会直接使用)
jwt 是一个JSON格式的字符串,用于存储相关的令牌数据,实现登录的功能。能在微服务直接进行传递.==》令牌机制。<a name="S9m4F"></a>
### 6 用户登录的解决方案
![](https://cdn.nlark.com/yuque/0/2021/png/12589476/1635910459641-3bede1bf-20e3-4b09-ae1e-5c0dcf99c3dc.png#id=DsgV3&originHeight=924&originWidth=1682&originalType=binary&ratio=1&status=done&style=none)
<a name="vB7Q2"></a>
### 7 jwt
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9组成部分:<br />jwt由三部分来组成:<br /> header 头<br /> 描述了基本的信息 json数据--》经过base6编码之后得到一个字符串:比如:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9payload 载荷<br /> 将JSON的数据--》通过base64进行编码得出一个字符串:比如:
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQsignature 签名:<br />由 header经过base64 加密后的数据+payload 经过base64加密的+ 秘钥, 通过头部定义的加密算法 得出一个字符串,该字符串就是签名。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ ```最终jwt的最终的形式:三个部分通过"点"来链接。