gpt4 book ai didi

java - 如何从 Liferay MVC Portlet 触发自动登录

转载 作者:行者123 更新时间:2023-11-30 02:13:22 27 4
gpt4 key购买 nike

我已经在钩子(Hook)中实现了自动登录,这样我就可以通过在网址中发送登录参数来登录。

我试图避免必须在网址中以纯文本形式发送这些参数的情况。有没有办法从 MVCPortlet 操作方法触发自动登录?我尝试在操作响应中设置参数,但在自动登录 Hook 的 login() 方法中它们始终为空。

Action 类:

public void triggerLogin(ActionRequest actionRequest,
ActionResponse actionResponse) {
actionResponse.setRenderParameter("userEmail", user.getEmail());
actionResponse.setRenderParameter("password", user.getPassword());
}

登录 Hook :

@Override
public String[] login(HttpServletRequest request, HttpServletResponse response) throws AutoLoginException {

String email = request.getParameter("userEmail"); // null
String password = request.getParameter("password"); // null

// email and password are null
}

我还尝试在 HttpServletResponse 上设置它,如下所示:

PortalUtil.getHttpServletResponse(
actionResponse).setHeader("userEmail", user.getEmail());

有没有办法在不将密码发送到前端的情况下做到这一点?

最佳答案

这里有几个项目是有问题的 - 从安全角度来看,第一个是您似乎在自己的 portlet 中处理用户名/密码 - 为什么您要在为您处理所有身份管理的平台上执行此操作我无法理解,但你可能有你的理由。我觉得这个评论是必要的,即使你可能有一个很好的理由,因为 95% 的其他原因(后来读到这篇文章的人)都不会好。

话虽如此,有一个 blade sample for an auto login - 这很容易调整为需要 nonce - 不是用户名/密码 - 您甚至可以对当前 session 进行哈希/签名或以其他方式进行保护,以便您可以自动登录在自定义操作中经过身份验证的任何用户。我不知道在服务器和浏览器之间来回发送随机数是否可以解决您的问题。

最后,关于PortalUtil.getHttpServletResponse,我不确定这样的响应 header 应该做什么。如果有的话,您将告诉浏览器电子邮件地址,但仅此而已。

通过这些 PortalUtil 类并恢复到 HttpServletRequest/-Response,我很少看到它们执行人们期望的操作。在传送门世界中,这一层被牢牢屏蔽,远离你。但如果你想使用它,有一个重要的区别:我过去写过关于 PortalUtil.getHttpServletRequest 及其姊妹调用 PortalUtil.getOriginalHttpServletRequest 的描述 - 绝对没有什么对于这个答案,但它可能有助于解决问题(我希望它不会混淆)。 You can find it here .

关于java - 如何从 Liferay MVC Portlet 触发自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com