一个网关的下游是多个业务线,如果这些业务线都有鉴权的需求,那么可以使用网关的鉴权功能,没必要每个业务线都自己实现一套鉴权的代码。除非是与业务强相关的鉴权,是那种不具有普适性的需求。
soul网关的鉴权功能是在sign插件模块,作为一个插件,是可以启用或者不启用的。我们来看下soul网关sign模块的大致功能。
1.首先将环境启动一下,启动soul-admin管理后台、启动网关soul-bootstrap、启动示例的springboot项目soul-example-http
2.在admin管理后台的sign插件模块,添加selector和rule。
假设我们是要对order/findById
接口鉴权,那么可以创建相应的selector和rule如下图所示。
创建的时候要注意,selector或者rule的name不能与已有的重名,否则会创建不成功。
因为看soul-admin/src/main/resources/META-INF/schema.sql这个文件,这个是soul-admin启动的时候会执行的一个脚本,看里面的表结构,selector和rule表都是以name为unique key的。
因为我们在第一步启动示例的springboot项目soul-example-http的时候,已经在divide插件里面向selector和rule表分别插入了名为/http
和/http/order/findById
的selector和name,所以我们在sign插件里创建selector和rule的时候,不能与已经存在的重名。