我知道这个问题已被问了好几次,但是,我有一个不同的方法来实现我想要的。玩!框架 - 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