以RBAC权限管理体系为例,在Zuul的拦截器中基于访问URI可以实现用户的权限鉴别需求;鉴权拦截器示例如下所示:
@Component
public class AuthUserFilter extends ZuulFilter {
@Override
public String filterType() {
return PRE_TYPE; // 定义过滤器类型:前置过滤器
}
@Override
public int filterOrder() {
return PRE_DECORATION_FILTER_ORDER - 1; // 定义过滤器顺序:比优先级最高的Filter还要优先执行
}
@Override
public boolean shouldFilter() {
// 根据URI判断是否启用该过滤器
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
// 这里的鉴权逻辑,在实际项目中应该查询数据库或者缓存来实现,建议采用Redis缓存方式
if (request.getRequestURI().startsWith("/ms-goods/goods/comment")) {
return true; // 访问专属User会员的接口地址时,启用过滤器
}
return false;
}
@Override
public Object run() throws ZuulException {
/