我知道這個問題已被問了好幾次,但是,我有一個不同的方法來實現我想要的。玩!框架 - SaaS子域名過濾器
Since Play 1.1, you're able to match hosts.這是非常有用的,但是,它意味着對於每個控制器,我需要通過subdomain
路線PARAM。如果我有數百個使用subdomain
參數的控制器,這是相當的負擔和重複。
是否沒有辦法創建一個過濾器,在執行其他所有操作之前查看主機名,然後爲該請求設置一個即時配置值?
例如(頭腦風暴),過濾器會執行以下操作:
// use request host, but hard-coded for now...
String host = "test.example.com";
Pattern p = Pattern.compile("^([a-z0-9]+)\\.example\\.com$");
Matcher m = p.matcher(host);
if (m.matches()) {
// OUT: test
System.out.println(m.group(1));
System.setProperty("host", m.group(1));
}
而在車型我會做這樣的事情System.getProperty("host");
我知道這是不是那應該怎麼做,但我只是集思廣益。
至少用這種方式:
- 我沒有傳送到每個 控制器傳遞
subdomain
PARAM。 - 我沒有通過任何車型 無論是
- 車型已到
subdomain
值直接訪問通過subdomain
PARAM這樣我就可以篩選出屬於客戶
物體。此外,我我知道System.setProperty()
總是適用於整個JVM;這是一個問題。我只希望這個值在整個請求期間都可用。我應該使用什麼?
讓我們分析一下。你會怎麼做?什麼是一個好方法? Play可能嗎?我相信有相當多的人遇到這個問題。您的意見非常感謝。
嗨@Todd - 謝謝你的回答。這是一個更好的方法。有沒有一種方法可以在模型中獲得配置屬性?如果沒有,那麼我會接受這個解決方案。 – Flukey 2012-02-09 09:11:54
我剛剛閱讀這篇文章,也許我會走下這條路:http://www.lunatech-research.com/archives/2011/03/04/play-framework-writing-multitenancy-application-hibernate-過濾器 – Flukey 2012-02-09 09:12:14