Spring - 如果域不同,则拦截请求和处理方式不同

时间:2017-06-30 10:14:19

标签: spring spring-boot

我有多域应用程序。 这意味着: 1.主域的主要应用程序用于向全世界展示,并为客户管理他们的数据。 2.客户通过指向主应用程序的自己的域向世界展示他们的数据

我需要能够拦截请求并以自己的方式处理它,如果它是针对除主要域之外的所有其他域。 我怎样才能做到这一点?请求拦截的完整解决方案和那种控制器的任何好例子?

1 个答案:

答案 0 :(得分:0)

您可以使用 IntPtr ptrGet; var resGetInfo = SafeNativeMethods.NetShareGetInfo("server_name", "share_name", 502, out ptrGet); SafeNativeMethods.SHARE_INFO_502 siGet = (SafeNativeMethods.SHARE_INFO_502)Marshal.PtrToStructure(ptrGet, typeof(SafeNativeMethods.SHARE_INFO_502));

这是一个简单的例子:

filter

运行它并尝试打开@SpringBootApplication public class So44844042Application { public static void main(String[] args) { SpringApplication.run(So44844042Application.class, args); } @Component public static class DomainFilter extends GenericFilterBean { private final Map<String, String> redirect = new HashMap<>(); public DomainFilter() { redirect.put("localhost", "http://www.google.com"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { final String domain = request.getServerName(); if (redirect.containsKey(domain)) { ((HttpServletResponse) response).sendRedirect(redirect.get(domain)); } else { chain.doFilter(request, response); } } } @RestController public static class HomeController { @GetMapping public String home() { return "Welcome"; } } } 它会将您重定向到http://localhost:8080,但www.google.com仍可访问。