Spring Boot 无法正确处理传入请求路径

mnemlml8  于 2023-03-29  发布在  Spring
关注(0)|答案(1)|浏览(107)

我正在尝试在java spring上实现验证,我需要在Controller中设置方法来处理这样的链接:
https://MyWebsite.io/api/v1/auth/verify/v1WKKvOWLcLeQepiZ3c0xj9tnPFlW3eOeajASdMhRx1kvhHrdBqDLFlzxE/aLIlo26hh6Q74iPVTjWvDJUVVSM8zEqMxTqBLRjbJaFH3RNnXsNpcRhJSsOSYSOAL0eE/WPiEYwdKmg5zg1VNCo1JFQ==
其中v1 WKKvOWLcLeQepiZ 3c 0xj 9 tnPFlW 3eOeajASdMhRx 1 kvhHrdBqDLFlzxE/aLIlo 26 hh 6 Q74 iPVTjWvDJUVVSM 8 zEqMxTqBLRjbJaFH 3RNnXsNpcRhJSsOSYSOAL 0 eE/WPiEYwdKmg 5 zg 1VNCo 1 JFQ ==是关于用户的加密信息
但我不能处理这个网址,因为“/",我可以以某种方式转换这个网址,使它将正确地处理在这个控制器

@RestController
@RequestMapping("/api/v1/auth")
@RequiredArgsConstructor
public class AuthenticationController {
    @GetMapping("/verify/{key}")
    public ResponseEntity<?> verify(@PathVariable String key){
        return ResponseEntity.ok(key);
    }

}
sqxo8psd

sqxo8psd1#

如果你可以改变网站的加密部分,为什么不使用base64编码,然后发送它作为一个加密的字符串?像下面这样

https://MyWebsite.io/api/v1/auth/verify/{base64-encoded-string}

你可以使用纯Javascript的btoa()函数对字符串进行编码。所以你不必担心你使用的前端框架。
您的后端代码应该如下所示。

@RestController
@RequestMapping("/api/v1/auth")
@RequiredArgsConstructor
public class AuthenticationController {
    @GetMapping("/verify/{key}")
    public ResponseEntity<?> verify(@PathVariable String key){
        String decodedInfo = new String(Base64.getUrlDecoder().decode(key));
        return ResponseEntity.ok(decodedInfo);
    }
}

此代码将帮助您避免使用特殊字符。

相关问题