我有一个Spring Boot& Spring Security应用程序正在运行,现在应该获得多租户支持。
我想让事情变得尽可能简单。虽然我想通过路径变量或请求参数来确定数据库。 (Spring Boot应用程序前面的Apache Web Server将处理它,即它从子域映射到路径变量或请求参数)。
现在我需要一种方法来在Spring调用控制器之前获取第一个路径变量(或特定的请求参数),当然值必须存储在某个地方,所以当我需要选择正确的数据库时我可以访问它
所以(取决于可能的/更容易的)
http://localhost:8080/customer1
(我更喜欢)或http://localhost:8080?_customer=customer1
应该只使用@Controller
调用@RequestMapping("")
,并且值customer1
应存储在该请求的某个位置。
我知道2.
可能会更简单,因为它已经点击了@Controller
,但我更喜欢1.
。
谢谢!
我刚认识到,HandlerInterceptor
无法按预期工作,因为Spring Security始终首先处理请求。虽然我需要一个在Spring Security开始之前处理它的拦截器。
答案 0 :(得分:3)
您可以使用org.springframework.web.servlet.HandlerInterceptor
。实现逻辑以通过Extract point descriptors from small images using OpenCV方法将值存储在请求中。
在spring配置文件中配置它,如下所示
<mvc:interceptors>
<bean class="com.blah.interceptor.SomeInterceptor"/>
</mvc:interceptors>
如果要根据路径拦截请求,请使用以下配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/customer1" />
<bean class="com.blah.interceptor.SomeInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>