我有多域应用程序。 这意味着: 1.主域的主要应用程序用于向全世界展示,并为客户管理他们的数据。 2.客户通过指向主应用程序的自己的域向世界展示他们的数据
我需要能够拦截请求并以自己的方式处理它,如果它是针对除主要域之外的所有其他域。 我怎样才能做到这一点?请求拦截的完整解决方案和那种控制器的任何好例子?
答案 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
仍可访问。