格式化认证相关接口输出

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,其他版本可自行尝试。

本页目录