2017-02-14 39 views
0

我使用grails 2.5.5版本的特定视图,假设我进入网址为www.localhost:8080/app-name那么就应该打开MyHome.gsp,想,如果我给其他网址前:demo1.localhost.com:8080/app-name那么它应该重定向到一些登录页面,如login.jsp。我怎样才能做到这一点?我怎样才能重定向到基于URL中的Grails

+1

我会强烈建议您创建一个基本的Grails应用程序,设置弹簧安全性并遵循如何启动和运行的基本说明 - 弹簧安全默认为这样 - 如果您打开一个未授权的页面,它会重定向到登录页面 – Vahid

+0

实际上我有一个应用程序, 'www.localhost:8080/app- name'和'demo1.localhost.com:8080/app-name'显示的是相同的'MyHome.gsp',但现在无论何时点击'demo1.localhost.com:8080/app-name',它都应该重定向到'login.gsp '登录后它显示相同的'MyHome.gsp' ..我发现像'localhost:8080/app-name/example'这样的spring-security,但是我的url不同,它不在'app-name /'后面 – Sat

+0

因此你的问题的措辞完全不正确,那么你的意思是:'春季安全保留URL登录后'尝试谷歌搜索http://stackoverflow.com/questions/6968210/grails-spring-security-redirect-after-login-success-failure – Vahid

回答

1

让我打破它给你:

假设我有www.localhost:8080/app-name

想,如果我给其他网址前:demo1.localhost.com:8080/app-name

您的应用程序从这里开始:

案例1:/app-name 案例2:/app-name

该网址的其余部分实际上是DNS,并将绑定的tomcat特定或通配符网址配置为给定的应用程序。

因此,总之,您需要筛选应用程序parse url中的整个网址并相应地重定向到您的应用程序。

然后你需要用grails截取每个url 2有SecurityFilters这就是我所知道的与apache-shiro一起工作的可能也适用于spring安全。

,并在其中你需要全面检查这样的事情

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. 

但正如我说,你是为我所表达的地址是什么,或者有人为如何获取到的应用程序有没有在这里谈论肤浅的东西与实际的应用程序做。这就是为什么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] 
         } 
        } 
+0

谢谢,它在本地工作很好,但是当涉及到生产方面时,实际的url就像'www.somedomain.com',我的客户端url就像'www.demo1.somedomain.com'在这种情况下输出'url.host'是'www.demo1.somedomain.com',这里如果客户端点击'www.somedomain.com',我会重定向到'MyHome.gsp',否则'Login.gsp'。不能保证它最后应该是'.com',它可能是'.org'或'.co.in'等 – Sat

+0

检查我的更新 – Vahid