4

我需要如果用户已经登录并且他手动输入登录路径,他会重定向到主页?请让我知道如何执行此操作。

谢谢

4

2 回答 2

1

据我了解,即使在登录后输入以下登录 URL,您也希望这样做:

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 挂钩,该挂钩将拦截所有请求并检查 URL 的相关参数,例如struts_action=/login/login并执行以下操作(在伪代码中):

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 过滤器,但您可以按照相同的方式制作一个钩子)以及如果用户已登录,则liferay-web.xml该 URLc/portal/login将您带到该页面或home否则将带您进入登录页面。

这与使用 Cookie 无关 :-)

于 2013-02-08T07:11:08.877 回答
0

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

yourCookie登录后立即创建一个 Cookie(比如说)。

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
于 2013-02-08T03:48:46.207 回答