我正在使用Spring微服务构建微服务,我有两个相关的问题。
1。我在Api网关(即Zuul服务器)中有Spring安全性,现在Zuul不会转发任何请求,如果我已经从流中读取请求一次以身份验证(从POST请求中获取用户名/通行证)new ObjectMapper(). readValue(request.getInputStream(),UserDto.class);
如何读取请求,然后再次将相同的请求转发给下游服务?
2.Zuul没有转发request.set属性()到下游服务,所以一个解决办法是使用ctx.addZuulask estHeader,这使得请求头
太大了,我如何获得request.set属性并进入下游服务。
public Authentication getAuthentication(HttpServletRequest request) {
final String token = request.getHeader(AUTH_HEADER_NAME);
logger.info("token="+token);
if (token != null) {
logger.info("Entering getAuthentication");
final UserToken userInfo = tokenHandler.validateToken(token);
if (userInfo != null
&& token.equals(String.valueOf(redisUtility.getValue(userInfo.getUsername()+"_"+userInfo.getUniqueId())))) {
logger.info("Validating token key="+userInfo.getUsername()+"_"+userInfo.getUniqueId());
User user=userDetailsService.loadUserByUsername(userInfo.getUsername());
if(user!=null && user.getUsername().equals(userInfo.getUsername())
&& user.getLastPasswordResetTime()<userInfo.getCreatedTime()){
request.setAttribute("username",user.getUsername());//**Not able to fetch this in Downstream services**
logger.info("Token Authenticated for User "+user.getUsername());
return new UserAuthentication(user);
}
}
}
return null;
}
public class SimpleFilter extends ZuulFilter {
private static Logger log = LoggerFactory.getLogger(SimpleFilter.class);
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
request.setAttribute("test", "test");// Not able to get this in services
log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
return null;
}
@Bean
public SimpleFilter simpleFilter() {
return new SimpleFilter();
}
@RequestMapping(value = "/test/avl",method=RequestMethod.POST)
public String test(HttpServletRequest request) {
System.out.println(request.getAttribute("test")+"");
return "Spring in Action";
}
我知道晚了一年。但对于任何新访客。
创建过滤器。
@Component
public class AuthenticationFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
ctx.addZuulRequestHeader("userId", "123456789");
return null;
}
}
使用@Component对其进行注释,以便自动加载。在运行方法内部,使用addZuulRequestHeader
我创建了一个基于wsdl文件的客户机。 这可能是因为web服务是用C#编写的,而且最有可能的是,它需要oasis头,在其中存储用户名和密码值。 我现在能创造的新环境是: 所需的enevelope如下:
问题内容: 我正在运行一个基于Java Spring MVC的Web应用程序。它还基于Hybris平台。 现在,已经实现了有关身份验证和授权的基本功能。意味着我们确实有用于会话,有效的用户系统等的过滤器。 但是,我们目前还没有针对诸如XSS和其他可能的攻击之类的安全措施。XSS可能是最大的问题,因为它是最常见的攻击方式。 现在,我不知道……明智地采取什么步骤?我环顾四周,我发现存在像XSS-Fil
本文向大家介绍vue+axios全局添加请求头和参数操作,包括了vue+axios全局添加请求头和参数操作的使用技巧和注意事项,需要的朋友参考一下 走登录的接口都会返回一个token值,然后存起来方便之后调接口的时候给后台传过去,传给后台的方式有两种:(具体使用哪种需要和后台商量) 1、放在请求头中 2、放在接口的参数中 1、放在请求头中 下面代码是从本地cookie中拿token VueCook
问题内容: 我有一个尝试发送的HTTP GET请求。我尝试通过首先创建一个对象并将参数添加到该对象,然后调用我的对象,来将参数添加到此请求中。此方法失败。但是,如果我手动将参数添加到URL中(即append ),它将成功。 我知道我在这里缺少任何东西,任何帮助将不胜感激。 问题答案: 我使用NameValuePair和URLEncodedUtils列表创建所需的url字符串。
我正在尝试调用post请求将文件上载到Archer。请在下面找到我的代码: 我收到以下错误:b'{“消息”:“请求包含实体正文,但没有内容类型标头。此资源不支持推断的媒体类型“应用程序/八位字节流”,“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“application/octet stream\”的内容中读取类型为“AttachmentWrap