就像 this 中用户 jack 想要做的那样发布后,我需要做一个通过 token 身份验证使用登录的 portlet。
正如那里所述,portal-impl.jar
我无法使用,所以 LoginUtil.login
无法访问。
此外,向现有 ext plugin
添加功能几乎不可能,因为他太“密集”了,而创建另一个是一种不好的做法。
所以我选择基于 login()
创建自己的登录功能LoginUtil
中的逻辑。它基本上是相同的代码,但具有所需的 portal-impl.jar
的属性存储在本地(升级到较新的 Liferay 版本是不可能的,所以我认为这样做是可以的)。
一切似乎都工作正常,但是我没有登录,Tomcat 中也没有出现错误。
现在,我的问题是我无法意识到哪一段代码实际让用户登录。
我猜应该是这个
session.setAttribute("j_username", userIdString);
session.setAttribute("j_password", user.getPassword());
session.setAttribute("j_remoteuser", userIdString);
session.setAttribute(WebKeys.USER_PASSWORD, password);
PS:在我的自定义登录方法(我重复一遍,它与 LoginUtil 的登录方法具有相同的代码)之后,如果我输入以下代码:
ThemeDisplay td = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
User uu = td.getUser();
System.out.println("user = " + uu.getEmailAddress());
它将输出user = default@liferay.com
,所以登录不成功。
该代码中的用户在哪里登录?!
PPS: 在我的 Portal-ext.properties 中,以下是以下附加组件:
auth.pipeline.enable.liferay.check=false<br/>
session.enable.persistent.cookies=true<br/>
session.enable.phishing.protection=false<br/>
session.disabled=false<br/>
session.test.cookie.support=true
我的 Liferay 版本是 5.2.3。
最佳答案
抱歉,但我认为,更好、最简单的方法是使用 AutoLogin 功能创建一个新的钩子(Hook): How do I use autologin in liferay?
ps:然后你就升级稳定了。
关于java - Liferay 登录如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17787219/