第二步:修改yml配置文件com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
第三步:在nacos的public命名空间中创建sca-gateway.yml配置,内容如下:server: port: 9000 spring: application: name: sca-gateway #可以省略的 cloud: #虽然网关没有在nacos进行注册,但是这个子项目sca-gateway在nacos进行注册了所以得启动nacos nacos: discovery: #注册和发现 server-addr: localhost:8848 config: server-addr: localhost:8848 file-extension: yml sentinel: transport: dashboard: localhost:8180 eager: true # 服务启动的时候sentinel控制台看到的服务信息 # gateway: #网关配置 # routes: #配置网关路由规则 #路由配置(routes下可以有多个路由,用id作为唯一标识) # - id: route01 #路由id,自己指定一个唯一值即可 # #lb表示负载均衡 # uri: lb://sca-provider #网关帮我们转发的url,请求转发路径,一般请求访问的是网关,网关会帮忙转达的 # #url是uri的一个子集 # predicates: ###断言(谓此):匹配请求规则(定义转发条件,只有谓词所有条件都满足才会请求抓发) # - Path=/nacos/provider/echo/** #请求路径定义,此路径对应uri中的资源,(**)代表多级目录 # # - Header=X-Request-Id, d+ # # - Method=Get # # - Query=token. d+ # filters: ##网关过滤器,用于对谓词中的内容进行判断分析以及处理,这也是局部过滤器,针对于具体(当前)路由进行设计,谓词条件为true时则执行这里的filter # - StripPrefix=1 #转发之前去掉path中第一层路径,例如nacos,去除前缀过滤器,这里的1就是去除path的第一层目录 #sca-provider: # ribbon: #ribbon是一个负载均衡组件,是Ribbon组件中提供了IRule接口及相关实现 # NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #流程分析: RoutePredicateHandlerMapping-->PathRoutePredicateFactory-->Xxx WebHandler-->Filters()
spring:
cloud:
gateway: #网关配置
routes: #配置网关路由规则 #路由配置(routes下可以有多个路由,用id作为唯一标识)
- id: route01 #路由id,自己指定一个唯一值即可
#lb表示负载均衡
uri: lb://sca-provider
#网关帮我们转发的url,请求转发路径,一般请求访问的是网关,网关会帮忙转达的
#url是uri的一个子集
predicates: ###断言(谓此):匹配请求规则(定义转发条件,只有谓词所有条件都满足才会请求抓发)
- Path=/nacos/provider/echo/** #请求路径定义,此路径对应uri中的资源,(**)代表多级目录
# - Header=X-Request-Id, d+
# - Method=Get
# - Query=token. d+
filters:
- StripPrefix=1
说明,此配置添加后,可以将bootstrap.yml中网关部分的配置注释掉。
第四步:启动nacos,sentinel,provider,gateway服务,然后进行访问测试。
单点登录系统单点登录,英文是 Single Sign On(缩写为 SSO)。即多个站点共用一台认证授权服务器,用户在其中任何一个站点登录后,可以免登录访问其他所有站点。而且,各站点间可以通过该登录状态直接交互
设计方案:
用户登陆成功以后,将用户信息存储到token(令牌),然后写到客户端进行存储。
说明,在这套方案中,用户登录成功后,会基于JWT技术生成一个token,用户信息可以存储到这个token中.后续用户在访问资源时,对token内容解析,检查登录状态以及权限信息,无须再访问数据库.
第一步:新建一个maven工程 第二步:添加pom依赖
第三步:导入数据库4.0.0 com.jt 02-sso1.0-SNAPSHOT org.springframework.boot spring-boot-dependencies2.3.2.RELEASE pom import org.springframework.cloud spring-cloud-dependenciesHoxton.SR9 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies2.2.6.RELEASE pom import org.projectlombok lombokprovided org.springframework.boot spring-boot-starter-testtest org.junit.jupiter junit-jupiter-engineorg.apache.maven.plugins maven-compiler-plugin3.8.1 8 8
第四步:创建一个子模块sso-system 第五步:添加pom依赖source d:/jt-sso.sql
第六步:创建并编写启动类 第六步:测试数据库连接是否成功,创建一个测试类进行测试02-sso com.jt 1.0-SNAPSHOT 4.0.0 sso-systemmysql mysql-connector-javacom.baomidou mybatis-plus-boot-starter3.4.2 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discoverycom.alibaba.cloud spring-cloud-starter-alibaba-nacos-configorg.springframework.boot spring-boot-starter-web



