java - Liferay 登录如何工作?

标签 java session authentication liferay

就像 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/

相关文章:

java - 使用selenium webdriver运行exe文件

java - 如何使用删除方法删除链表中的第一个节点

php - 将 PHP 重定向到登录页面,而不是强制登录

session - 使用 wsadmin 列出事件 session

php - Laravel 5.1 - 当注册用户应用程序重定向到/dashboard 但不检查帐户是否已确认

ruby-on-rails - 使用 rspec 测试设计 View

java - 我可以从一个 EntityManagerFactory 创建多个数据库连接吗?

java - 使用 Java API 设置 Google 表格中的单元格大小

java - 具有非常大表的 Liferay 6 持久 session

python - Django 管理员无法使用自定义身份验证后端