正如用户杰克想要在this帖子中做的那样,我需要做一个使用登录通过令牌认证的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
session.enable.persistent.cookies=true
session.enable.phishing.protection=false
session.disabled=false
session.test.cookie.support=true
我的Liferay版本是5.2.3。
答案 0 :(得分:1)
很抱歉,但我的意见是,更好更简单的方法是使用AutoLogin funktion创建一个新的钩子:How do I use autologin in liferay?
ps:然后你升级稳定。