我正在使用grails 2.5.5
版本,假设我输入的网址为www.localhost:8080/app-name
,那么它应该打开MyHome.gsp
,假设我提供其他网址:demo1.localhost.com:8080/app-name
然后它应该重定向到某个登录页面,如login.jsp
。我怎么能这样做?
答案 0 :(得分:1)
让我为你分手:
假设我有www.localhost:8080/app-name
假设我提供其他网址:demo1.localhost.com:8080/app-name
您的应用从这里开始:
案例1:/app-name
案例2:/app-name
该网址的其余部分实际上是DNS,并将特定于绑定tomcat的特定或通配符网址配置到给定的应用程序。
因此,简而言之,您需要过滤应用parse url中的整个网址,并相应地重定向您的应用。
然后你需要用grails 2截取每个url SecurityFilters据我所知,apache-shiro的工作也可以用于spring security。
并且在其中你需要全面检查类似
的内容URL url = new URL(request.getRequestURL().toString())
String subdomain=url.host
if (subdomain.contains('.')) {
subdomain= subdomain.split('.')[0]
}
that then returns your `demo1` you then redirect it another url if it matches your specific rule.
但正如我所说,你在谈论肤浅的东西,因为我表达了地址是什么,或者somone如何进入应用程序与实际应用程序无关。这就是IT是大生意的原因。大企业并不是因为每个人都试图将所有内容缩小到一个盒子中,而是因为当情况喜欢这种情况时需要更大的思考,即我需要一个类似于F5的负载均衡器,它将根据给定的URL拆分流量并发送给另一个要求授权的应用容器。
在那种情况下 subdomain= subdomain.split('.')[1]
然后这会留下错误的余地,因为用户可以放入demo1.somedomain.com
,如果解决得好,则会被subdomain= subdomain.split('.')[0]
我会这样做
String subdomain=url.host
if (subdomain.contains('.')) {
def splitter= subdomain.split('.')
subdomain= splitter[0]
if (subdomain=='www' && splitter.size()>1) {
subdomain= splitter[1]
}
}