【开端】通过Java 过滤器灵活配置URL访问权限,并返回403

一、绪论

在JAVA项目系统中,后端给前端提供接口。但是在某些场景我们需要临时控制接口是否能被访问。或关闭某一接口的访问权限。

比如某一接口被攻击了或者某一接口存在漏洞,在系统不关闭的情况下,如何控制系统的访问权限。

二、控制接口访问权限的方案

这里介绍通过过滤器的方式,

1、首先所有的接口URL都应该可配置

     //禁止访问的url
        if (pathMatcher(forbiddenUrl, path)) {
            return forbidden(response);
        }

	//禁止访问的url
		if (pathMatcher(forbiddenUrl, path)) {
			return forbidden(response);
		}

path  获取到请求的URL

forbiddenUrl 被禁止访问的URL列表。这里可以是多个或者一个。

    String path = request.getURI().getPath(); 获取前端请求的URL 

private boolean pathMatcher(List<String> urlList, String requestUri) {
		for (String url : urlList) {

			if (antPathMatcher.match(url, requestUri)) {
				return true;
			}
		}
		return false;
	}

 

2、将禁止访问信息返回到前端

	/**
	 * 无权限
	 * 
	 * @param response
	 * @return
	 */
	private Mono<Void> forbidden(ServerHttpResponse response) {
		log.info("========暂无权限访问========");
		String responseDataStr = JSON
				.toJSON(ResponseData.error(HttpStatus.FORBIDDEN.value(), "forbidden to acc 接口已关闭或无权访问")).toString();
		byte[] bytes = responseDataStr.getBytes(StandardCharsets.UTF_8);
		DataBuffer buffer = response.bufferFactory().wrap(bytes);
		response.setStatusCode(HttpStatus.FORBIDDEN);
		return response.writeWith(Mono.just(buffer));
	}

其中配置的URL列表方式可以通过数据库表或者apollo配置等配置注入

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值