需要启动的服务
API认证:
先调用oauth接口进行认证:
http://localhost/blade-auth/oauth/token
最后请求成功的结果
最后再请求具体的接口:
把上面请求返回的这两部分单独占出来:
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJ1c2VyX25hbWUiOiJhZG1pbiIsInJlYWxfbmFtZSI6IueuoeeQhuWRmCIsImF2YXRhciI6Imh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL3Jtc3BvcnRhbC9CaWF6ZmFueG1hbU5Sb3h4VnhrYS5wbmciLCJhdXRob3JpdGllcyI6WyJhZG1pbmlzdHJhdG9yIl0sImNsaWVudF9pZCI6InN3b3JkIiwicm9sZV9uYW1lIjoiYWRtaW5pc3RyYXRvciIsImxpY2Vuc2UiOiJwb3dlcmVkIGJ5IGJsYWRleCIsInBvc3RfaWQiOiIxMTIzNTk4ODE3NzM4Njc1MjAxIiwidXNlcl9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJyb2xlX2lkIjoiMTEyMzU5ODgxNjczODY3NTIwMSIsInNjb3BlIjpbImFsbCJdLCJuaWNrX25hbWUiOiLnrqHnkIblkZgiLCJvYXV0aF9pZCI6IiIsImRldGFpbCI6eyJ0eXBlIjoid2ViIn0sImV4cCI6MTY2MzY1NDQzNSwiZGVwdF9pZCI6IjExMjM1OTg4MTM3Mzg2NzUyMDEiLCJqdGkiOiI5N2RmOWY4MS02N2UwLTQ3MDEtYWU2Ni03YjZkZmI3MDQ1MzkiLCJhY2NvdW50IjoiYWRtaW4ifQ.bqoPSKZCEjBzoK0-S3GNn-3veYd05JpLcLRnH67vPU8",
"token_type": "bearer"
请求参数传递如下:
请求头传递如下:
API鉴权放行
理论上看,所有业务API,都需要进行鉴权,这样才能保证整个系统的安全性,但也有个别特例情况,API 不需要认证也可以调用,这里就需要用到 Secure 的 API 放行配置。
若是使用SpringCloud版本,则打开nacos,找到对应配置文件增加接口放行配置
若需要拦截某个api下所有的请求,则可以改为 /api/**
, 其中 **
则代表下层所有请求
重启工程,去掉请求头,可以看到,请求成功了,说明 API 放行
配置成功
细颗粒度鉴权配置
-
鉴权配置用到了 Secure 模块的
@PreAuth
注解 -
为了可以起到对比的作用,对
count
进行权限放行(只要通过Token认证就可调用API)。
@GetMapping("count")
@PreAuth("permitAll()")
public Integer count(Integer cnt) {
return cnt * 10;
}
对 info
进行权限判断,调用方需要拥有test
的角色权限才可以调用
@GetMapping("info")
@PreAuth("hasRole('test')")
public String info(String name) {
return "Hello, My Name Is: " + name;
}
调用 /api/count
发现请求成功。
调用 /api/info
发现返回了 请求未授权
,因为我们的admin
账号没有分配test
角色
尝试改回admin
权限
@GetMapping("info")
@PreAuth("hasRole('administrator')")
public String info(String name) {
return "Hello, My Name Is: " + name;
}
单个微服务配置文件添加到nacos
可以将单个项目下resource下的配置文件添加到nacos中,在nacos中的配置文件的命名就是就是微服务的名称.yaml。
例如:微服务名名blade-demo,在nacos中的配置文件名就为:blade-demo.yaml.
自定义包名设置
在blade-demo子项目中新建config包,在下面创建MybatisPlusConfiguration类,如下所示: