Spring Security
andを使用して小さくてシンプルな webapp を作成し、SpringMVC
それをマルチテナント アプリケーションに変換しようとしています。
私が望む概念は、私が持っている実際の JSP を再利用し、URL のパスに基づいて決定した構成に基づいて内容を変更することです。
例:
顧客 #1 (abc) - URL: http://mydomain.com/abc/login.html
顧客 #2 (xyz) - URL: http://mydomain.com/xyz/login.html
したがって、「テナント」の名前は、ページのパスのプレフィックスです。
コントローラーを次のように変更しました。
@Controller
@RequestMapping("/{customer:[a-zA-Z0-9]+}/login.htm")
public class LoginController
{
private static final Logger logger = Logger.getLogger(LoginController.class);
@RequestMapping
@ReadOnlyRequest
public String login(@PathVariable("customer") String customer, HttpServletRequest request)
{
// Do some 'customer' related actions here
return "login"; // Map to the 'login.jsp' view
}
}
私のビューリゾルバーの構成は次のとおりです。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
今まで、私は次のform-login
構成を持っていました:
<form-login
login-page="/login.htm"
authentication-failure-url="/login.htm?error=true"
login-processing-url="/login_process"
default-target-url="/index.jsp"
always-use-default-target="true"
/>
しかし、変更をサポートするために変換する方法がわかりません。
次のようなものに変換する方法はありますか?
<form-login
login-page="/${customer}/login.htm"
authentication-failure-url="/${customer}/login.htm?error=true"
login-processing-url="/${customer}/login_process"
default-target-url="/index.jsp"
always-use-default-target="true"
/>