自定义sign插件检验算法

说明

  • 用户可以自定义签名认证算法来实现验证。

扩展

  • 默认的实现为 org.apache.shenyu.plugin.sign.service.DefaultSignService

  • 新增一个类 CustomSignService 实现 org.apache.shenyu.plugin.sign.api.SignService

  1. public interface SignService {
  2. /**
  3. * Sign verify pair.
  4. *
  5. * @param exchange the exchange
  6. * @return the pair
  7. */
  8. Pair<Boolean, String> signVerify(ServerWebExchange exchange);
  9. }
  • Pair中返回true,表示验证通过,为false的时候,会把String中的信息输出到前端。

  • 把新增的实现类注册成为Springbean,如下

  1. @Bean
  2. public SignService customSignService() {
  3. return new CustomSignService();
  4. }

其他扩展

当你只希望修改签名算法时可以参考如下。

  • 签名算法,默认使用的 org.apache.shenyu.common.utils.SignUtils#generateSign,还可以新增一个类 CustomSignProvider 实现 org.apache.shenyu.plugin.sign.api.SignProvider.
  1. /**
  2. * The Sign plugin sign provider.
  3. */
  4. public interface SignProvider {
  5. /**
  6. * acquired sign.
  7. *
  8. * @param signKey sign key
  9. * @param params params
  10. * @return sign
  11. */
  12. String generateSign(String signKey, Map<String, String> params);
  13. }
  • 把新增的实现类 CustomSignProvider 注入到Spring IoC即可,如下
  1. @Bean
  2. public SignProvider customSignProvider() {
  3. return new CustomSignProvider();
  4. }