在使用OAuth2.0传输权限认证,为了再调用其他的项目的时候获取token,必须在token下传到其他各个服务
@Component
public class KeyUserFilter extends ZuulFilter {
private static final Logger logger = LoggerFactory.getLogger(KeyUserFilter.class);
@Override
public Object run() {
// TODO Auto-generated method stub
String keyCloakUser = CurrentUser.getInstance().getCurrentAuditor();
String keyCloakUserName = CurrentUser.getInstance().getCurrentAuditorName();
String nickname = CurrentUser.getInstance().getCurrentNickname();
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest req = (HttpServletRequest)RequestContext.getCurrentContext().getRequest();
requestContext.addZuulRequestHeader("authorization", req.getHeader("authorization"));
return null;
}
@Override
public boolean shouldFilter() {
// TODO Auto-generated method stub
return true; //表示是否需要执行该filter,true表示执行,false表示不执行
}
@Override
public int filterOrder() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String filterType() {
// TODO Auto-generated method stub
return "pre"; //定义filter的类型,有pre、route、post、error四种
}
}
在其他服务中,使用HttpServletRequest 通过getHeader方法获取获取Token值即可,然后在传给其他调用