📄 格式化认证相关接口输出
内部资料,请刷新扫码登录
pigcloud
特别说明
感谢群友 刘颂 大佬 提供的整合文档
本文是针对 Pigx 商业版 4.5.0 版本实现,其他版本能否适用请自行参考
# 业务背景
pigx4.5.0 中,有一个会困扰强迫症患者的问题就是认证相关的接口返回格式,不能跟 pigx 定义的 R 进行统一。这里介绍一个简单的办法供大家参考。
# 代码实现
通过自定义 Controller 的方式覆盖 oauth2 的默认接口。当然也可以保留原 oauth2 的接口,以兼容 oauth2 协议。至于是否覆盖,可根据实际情况裁决。认证相关的接口都可重写,代码如下:
@RestController
//“oauth”的话就会覆盖原来的接口,如果不想覆盖,这里随便改名字
@RequestMapping("oauth")
@RequiredArgsConstructor
public class TokenController {
private final TokenEndpoint tokenEndpoint;
private final CheckTokenEndpoint checkTokenEndpoint;
@GetMapping("token")
public R<OAuth2AccessToken> getAccessToken(Principal principal, @RequestParam
Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
ResponseEntity<OAuth2AccessToken> accessToken = tokenEndpoint.getAccessToken(principal, parameters);
return R.ok(accessToken.getBody());
}
@PostMapping("token")
public R<OAuth2AccessToken> postAccessToken(Principal principal, @RequestParam
Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
ResponseEntity<OAuth2AccessToken> postAccessToken = tokenEndpoint.postAccessToken(principal, parameters);
return R.ok(postAccessToken.getBody());
}
@RequestMapping("check_token")
@ResponseBody
public R<Map<String, ?>> checkToken(@RequestParam("token") String value) {
Map<String, ?> stringMap = checkTokenEndpoint.checkToken(value);
return R.ok(stringMap);
}
}
以上代码的 oauth2 版本为:spring-security-oauth2-2.3.6.RELEASE,其他版本可自行尝试。