2013-02-07 96 views

回答

0

你可以写在你的Web服务器重定向规则。下面的示例代码在Apache中的httpd.conf文件,

创建cookie(可以说yourCookie)只要你登录。

RewriteEngine On 
RewriteCond %{HTTP:Cookie} yourCookie=([a-zA-Z0-9]+) 
RewriteCond %{REQUEST_URI} ^/web/portal/home/-/portal/login/  //This is your login page URL 
RewriteRule .* http://%{SERVER_NAME}/web/portal/home [R=302]  //This is your Home Page URL 
+0

感谢@Vikas VI会尝试,并让我知道有没有其他方式,如果我不想使用cookie? – dhruv

1

据我知道你想,即使登录后,如果您输入以下登录网址:

http://localhost:8080/web/guest/home?p_p_id=58&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=0&_58_struts_action=%2Flogin%2Flogin 

,那么你应该考虑到主页即到http://localhost:8080/web/guest/home

所以,如果是这样的话,那么我想你可以创建一个servlet-filter hook这将拦截所有的请求,并检查作为struts_action=/login/login的URL等的相关参数,并执行以下(在伪代码):

if(is_SignIn_URL) { // check if it is the sign-in URL 

    if(isUserLoggedIn) { // check if user is logged-in 

     // redirect to the home page configured in portal-ext.properties 

    } else { 

     // let the application work normally i.e. let it go to the sign-in page 

    } 
} 

也为信息和深入的了解,您可以检查lifeary的AutoLoginFilter类(这是一个实际的Servlet过滤器,但你可以沿着相同的路线钩子)的URL c/portal/login这需要你到home页面如果和liferay-web.xml用户已登录,或将您带到登录页面。

这是独立使用一个Cookie :-)

+0

感谢@Prakash KI试图过滤器,但我的问题1)看来的doFilter函数被调用时EXH一个新的URL hit.But当我登录,然后按后退按钮后,它不列入似乎是called.Is有什么具体原因为了那个原因? – dhruv

+0

我忘了提我使用我的自定义portet是在http://本地主机:8080。所以,当用户logedin和他打回或手工输入的http://本地主机:8080他应该重定向到http://本地主机:8080 /网络/测试/家。 – dhruv

+0

@ user2051495您可以指示浏览器不要缓存。请参阅此[http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers](post)。但它会影响你的页面加载性能!此外,用户还可以点击网站上“任何”页面上的“返回”按钮。所以,你最终会清除缓存在很多页面。这将会是一个性能瓶颈 –

相关问题