mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
网关可校验token
This commit is contained in:
@@ -1,34 +1,35 @@
|
||||
* [首页](/?t=1571107529420)
|
||||
* [首页](/?t=1572076365237)
|
||||
* 开发文档
|
||||
* [快速体验](files/10010_快速体验.md?t=1571107529423)
|
||||
* [项目接入到SOP](files/10011_项目接入到SOP.md?t=1571107529447)
|
||||
* [新增接口](files/10020_新增接口.md?t=1571107529447)
|
||||
* [开发流程](files/10021_开发流程.md?t=1571107529447)
|
||||
* [业务参数校验](files/10030_业务参数校验.md?t=1571107529447)
|
||||
* [错误处理](files/10040_错误处理.md?t=1571107529447)
|
||||
* [编写文档](files/10041_编写文档.md?t=1571107529447)
|
||||
* [接口交互详解](files/10050_接口交互详解.md?t=1571107529448)
|
||||
* [easyopen支持](files/10070_easyopen支持.md?t=1571107529448)
|
||||
* [使用签名校验工具](files/10080_使用签名校验工具.md?t=1571107529448)
|
||||
* [ISV管理](files/10085_ISV管理.md?t=1571107529448)
|
||||
* [自定义返回结果](files/10087_自定义返回结果.md?t=1571107529448)
|
||||
* [自定义过滤器](files/10088_自定义过滤器.md?t=1571107529448)
|
||||
* [路由授权](files/10090_路由授权.md?t=1571107529448)
|
||||
* [接口限流](files/10092_接口限流.md?t=1571107529448)
|
||||
* [监控日志](files/10093_监控日志.md?t=1571107529448)
|
||||
* [SDK开发](files/10095_SDK开发.md?t=1571107529449)
|
||||
* [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1571107529449)
|
||||
* [应用授权](files/10097_应用授权.md?t=1571107529449)
|
||||
* [提供restful接口](files/10100_提供restful接口.md?t=1571107529449)
|
||||
* [文件上传](files/10104_文件上传.md?t=1571107529449)
|
||||
* [配置Sleuth链路追踪](files/10109_配置Sleuth链路追踪.md?t=1571107529449)
|
||||
* [预发布灰度发布](files/10110_预发布灰度发布.md?t=1571107529449)
|
||||
* [动态修改请求参数](files/10111_动态修改请求参数.md?t=1571107529450)
|
||||
* [使用eureka](files/10112_使用eureka.md?t=1571107529450)
|
||||
* [扩展其它注册中心](files/10113_扩展其它注册中心.md?t=1571107529450)
|
||||
* [快速体验](files/10010_快速体验.md?t=1572076365239)
|
||||
* [项目接入到SOP](files/10011_项目接入到SOP.md?t=1572076365257)
|
||||
* [新增接口](files/10020_新增接口.md?t=1572076365257)
|
||||
* [开发流程](files/10021_开发流程.md?t=1572076365257)
|
||||
* [业务参数校验](files/10030_业务参数校验.md?t=1572076365258)
|
||||
* [错误处理](files/10040_错误处理.md?t=1572076365258)
|
||||
* [编写文档](files/10041_编写文档.md?t=1572076365258)
|
||||
* [接口交互详解](files/10050_接口交互详解.md?t=1572076365258)
|
||||
* [easyopen支持](files/10070_easyopen支持.md?t=1572076365258)
|
||||
* [使用签名校验工具](files/10080_使用签名校验工具.md?t=1572076365258)
|
||||
* [ISV管理](files/10085_ISV管理.md?t=1572076365258)
|
||||
* [自定义返回结果](files/10087_自定义返回结果.md?t=1572076365259)
|
||||
* [自定义过滤器](files/10088_自定义过滤器.md?t=1572076365259)
|
||||
* [自定义校验token](files/10089_自定义校验token.md?t=1572076365259)
|
||||
* [路由授权](files/10090_路由授权.md?t=1572076365259)
|
||||
* [接口限流](files/10092_接口限流.md?t=1572076365259)
|
||||
* [监控日志](files/10093_监控日志.md?t=1572076365259)
|
||||
* [SDK开发](files/10095_SDK开发.md?t=1572076365259)
|
||||
* [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1572076365260)
|
||||
* [应用授权](files/10097_应用授权.md?t=1572076365260)
|
||||
* [提供restful接口](files/10100_提供restful接口.md?t=1572076365260)
|
||||
* [文件上传](files/10104_文件上传.md?t=1572076365260)
|
||||
* [配置Sleuth链路追踪](files/10109_配置Sleuth链路追踪.md?t=1572076365260)
|
||||
* [预发布灰度发布](files/10110_预发布灰度发布.md?t=1572076365261)
|
||||
* [动态修改请求参数](files/10111_动态修改请求参数.md?t=1572076365261)
|
||||
* [使用eureka](files/10112_使用eureka.md?t=1572076365261)
|
||||
* [扩展其它注册中心](files/10113_扩展其它注册中心.md?t=1572076365261)
|
||||
* 原理分析
|
||||
* [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1571107529450)
|
||||
* [原理分析之如何存储路由](files/90011_原理分析之如何存储路由.md?t=1571107529450)
|
||||
* [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1571107529450)
|
||||
* [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1571107529450)
|
||||
* [常见问题](files/90100_常见问题.md?t=1571107529450)
|
||||
* [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1572076365261)
|
||||
* [原理分析之如何存储路由](files/90011_原理分析之如何存储路由.md?t=1572076365261)
|
||||
* [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1572076365261)
|
||||
* [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1572076365262)
|
||||
* [常见问题](files/90100_常见问题.md?t=1572076365262)
|
||||
|
54
doc/docs/files/10089_自定义校验token.md
Normal file
54
doc/docs/files/10089_自定义校验token.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 自定义校验token(2.5.0)
|
||||
|
||||
从2.5.0开始在`@ApiMapping`注解中新增了一个属性`needToken`,用来告诉网关是否校验token
|
||||
|
||||
```java
|
||||
/**
|
||||
* 是否需要appAuthToken,设置为true,网关端会校验token是否存在
|
||||
*/
|
||||
boolean needToken() default false;
|
||||
```
|
||||
|
||||
使用方式:
|
||||
|
||||
```java
|
||||
@ApiMapping(value = "story.token.get", needToken = true/* 设置true,网关会校验token是否存在 */)
|
||||
public StoryResult token(StoryParam story) {
|
||||
OpenContext openContext = ServiceContext.getCurrentContext().getOpenContext();
|
||||
String appAuthToken = openContext.getAppAuthToken();
|
||||
StoryResult result = new StoryResult();
|
||||
result.setName("appAuthToken:" + appAuthToken);
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
指定了needToken=true后,网关会判断客户端是否传了`app_auth_token`参数,没有传则返回错误信息。
|
||||
|
||||
网关默认简单校验参数值是否存在,如果要校验有效性,需要自己实现。
|
||||
|
||||
自己实现步骤:
|
||||
|
||||
- 在ZuulConfig类中重写`doAfter`方法
|
||||
- 设置`ApiConfig中的tokenValidator属性`
|
||||
|
||||
`TokenValidator`是一个函数式接口,可以直接使用Lambda表达式,示例代码如下:
|
||||
|
||||
```java
|
||||
public class ZuulConfig extends AlipayZuulConfiguration {
|
||||
|
||||
@Override
|
||||
protected void doAfter() {
|
||||
ApiConfig.getInstance().setTokenValidator(apiParam -> {
|
||||
// 获取客户端传递过来的token
|
||||
String token = apiParam.fetchAccessToken();
|
||||
if (StringUtils.isBlank(token)) {
|
||||
return false;
|
||||
}
|
||||
// TODO: 校验token有效性,可以从redis中读取
|
||||
|
||||
// 返回true表示这个token真实、有效
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user