我需要如果用户已经登录并且他手动输入登录路径,他会重定向到主页?请让我知道如何执行此操作。
谢谢
据我了解,即使在登录后输入以下登录 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 无关 :-)
您可以在 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