Liferay 7 中自定义登录后操作中的 LAST_PATH 重定向

2024-04-02

我正在 Liferay 7 中实现自定义登录 - 一个用于登录挂钩 portlet 的模块,一个用于 ActionCommand 的模块。

我还为登录后事件生成了类。问题是重定向在此类或登录挂钩 porlet 的 JSP 上都不起作用。

这是我的 LifecycleAction 代码:

@Component(
    immediate = true,
    property = {
        "key=login.events.post"
    },
    service = LifecycleAction.class
)
public class UserLoginPostAction implements LifecycleAction {

    private static final Log LOGGER = LogFactoryUtil.getLog(UserLoginActionCommand.class);

    @Override
    public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {   

        HttpServletRequest request = lifecycleEvent.getRequest();
        HttpServletResponse response = lifecycleEvent.getResponse();
        HttpSession session = request.getSession();

        try {
            User currentUser = PortalUtil.getUser(request);
            LOGGER.info("USER|" + currentUser.getFirstName() + "|" + currentUser.getGroup().toString());
            LOGGER.info("LASTPATH|" + session.getAttribute("LAST_PATH"));
            LastPath lastPath = (LastPath) session.getAttribute("LAST_PATH");
            LOGGER.info(lastPath.getPath());
            session.setAttribute(WebKeys.LAST_PATH, lastPath);
            response.sendRedirect(lastPath.getPath());
        } catch (PortalException | IOException exception) {
            LOGGER.error(exception);
        }
    }

}

这是我的 portlet 登录 JSP 代码:

<c:choose>
    <c:when test="<%= themeDisplay.isSignedIn() %>">        
        <%
        response.sendRedirect(WebKeys.LAST_PATH);
        %>
    </c:when>
    <c:otherwise>
...

我的记录器能够在控制台上显示正确的值。

谢谢。


登录后的转发有点棘手。

如果您使用 LAST_PATH 和会话属性,则不需要发送重定向行,因为这将由 Liferay 处理。最后一个路径可能会受到 URL 参数的影响,如“重定向”。

如果您要使用发送重定向方法。构建您的 URL,然后将您创建的 URL 传递到 sendRedirect() 调用。不要使用会话参数。

PS:如果您要修改登录名,请查看认证管道 https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/authentication-pipelines而是对登录 portlet 进行大量覆盖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Liferay 7 中自定义登录后操作中的 LAST_PATH 重定向 的相关文章

  • mifare 卡身份验证错误“6982:安全状态未满足”

    我有 pc sc 读卡器和非接触式卡 mifare 卡 我可以连接到该卡 并且我也成功执行 getdate 命令 但是当我想进行身份验证时 我看到此错误 6982 安全状态不满足 我已经尝试过这 3 个不同的身份验证命令 但所有这些命令都出
  • 如何在 Cypress 的 E2E 测试中登录 Auth0?

    我已经开始测试 React Web 应用程序 但我没有走得太远 因为我遇到了登录问题 我在用cypress https www cypress io e2e测试工具 将显示一个带有登录按钮的欢迎页面 该页面会将您重定向到auth0 http
  • 如何使用 Laravel 5 检查用户是否已确认

    我正在尝试开箱即用地使用 Laravel 身份验证 身份验证不是问题 但我想检查用户是否已确认他的电子邮件地址 我如何让拥有Laravel检查表值是否confirmed值为 1 在 config auth php 我已经设置 driver
  • HTTP 请求未经客户端身份验证方案“Ntlm”的授权 从服务器收到的身份验证标头为“NTLM”

    我知道有很多与此类似的问题 但我找不到针对这一特定问题的问题 首先有几点 I have 无控制通过我们的 Sharepoint 服务器 我无法调整任何 IIS 设置 我相信我们的IIS服务器版本是IIS 7 0 我们的 Sharepoint
  • HTML/CSS/JS:如何强制浏览器保存非“密码”类型输入的密码?

    问题是我有两个类似于用户名和密码的值 但实际上是用户用来登录我创建的网站的 2 个随机生成的 GUID 它们并不是真正的用户名和密码 而是我尝试的 GUID来复制这个组合 通常 浏览器在看到元素的 type password 属性时会询问您
  • 在 PHP MySQL 中使用 jQuery AJAX 提交表单而无需重新加载

    我有一个基本的注册 登录页面 它使用 php 将数据提交到 SQL 数据库 但是 我希望页面在 jQuery AJAX 的帮助下不要在提交时重定向 无论成功与否 这是我目前所拥有的 但不起作用 它不显示任何错误消息 HTML 注册 html
  • 针对 Laravel 后端的 Angular Auth

    我正在使用 Laravel 创建一个应用程序 并构建一个小型内部 API 来连接到 Angular 前端 我的身份验证工作正常 但想确保这是一种可接受的用户登录方式 并确保一切都是安全的 会话控制器 public function inde
  • 如何在多个Postgresql数据库之间共享表

    我的 Web 应用程序有多个部署 每个部署都是一个具有唯一 URL 的唯一站点 每个部署都有不同的数据 UI 等 但有非常相似的 Postgresql 数据库结构 带有 PostGIS 这些数据库都位于同一数据库服务器上 我希望来自 1 个
  • 让网站登录也能在 WordPress 上使用

    我使用 PHP 和 MySQL 开发了一个网站 该网站已经有登录和注册表单 myweb com 我已经在这个网址添加了 wordpressmyweb com blog 我想禁用 WordPress 上的登录和注册页面并强制用户使用我的 基本
  • 如何从 python 发布到 hipchat

    我有一些 python 工具 我想将它们的更新发送到 hipchat 房间 我在其他地方使用 shell 脚本执行此操作 因此我知道它在我们的环境中有效 但我似乎无法将令牌推送到 hipchat API 一定是简单的事情 首先 这会正确进行
  • Http Auth 不适用于 PHP

    我使用 Laravel Lumen Shield 扩展进行 Http 身份验证 但是在我的本地计算机上一切都很完美 我只在我们的服务器上遇到了问题 问题是在我提交正确的登录数据后 登录屏幕再次出现 我尝试了不同的登录数据 不同的浏览器 登录
  • 如果我被冒充,为什么 Win32 API 函数 CredEnumerate() 会返回 ERROR_NOT_FOUND?

    我编写了一些示例代码 当我在普通用户帐户的上下文中从 Windows 命令提示符调用这些代码时 会使用 CredEnumerate 转储所有用户保存的凭据 但是 我真的希望能够从 SYSTEM 用户上下文执行此操作 因此我从 SYSTEM
  • 授予 Rails 应用 API 访问权限的最佳身份验证方法

    我想为我的网络应用程序提供经过身份验证的 API 访问 此类服务的消费者通常是其他网站 服务 验证这些用户身份的最佳方法是什么 OAuth openID http 身份验证 正如我们的工作一样 哪个最好 的答案是这样的 是 这取决于 HTT
  • MVC Owin Identity 2 CheckPasswordAsync() 将不会执行

    我有两个问题似乎彼此相关 并且 stackoverflow 中的其他重复项都不能回答我的问题 First当 的时候PasswordSignInAsync方法执行它永远不会停止或抛出任何异常它只是继续执行 var result await S
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 生产中未使用快速会话设置 Cookie

    我的应用程序分为客户端和服务器 客户端是托管在 Now sh 上的前端 Nextjs 应用程序 服务器是使用 Express 创建并托管在 Heroku 上的后端 因此域是 client app now sh 和 server app he
  • 使用 Cypress 绕过 UI 登录

    我在绕过 UI 登录时遇到问题 我的 Web 应用程序不使用 API 来验证用户身份 没有像这样的端点 login index php只需打开登录页面并提交表单即可登录 应用程序通过以下方式对用户进行身份验证auth REQUEST use
  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • 使用 chrome 扩展和 Django 进行身份验证

    对于那些熟悉 django 和 chrome 扩展的人 如何使用 cookie 进行身份验证 以便当您登录 django 制作的网站时 您的 chrome 扩展程序也会登录并激活 谢谢 您的 Chrome 扩展程序 通过 Javascrip
  • 使用 AuthenticationFailureHandler 在 Spring Security 中自定义身份验证失败响应

    目前 每当用户身份验证失败时 Spring Security 都会响应 error invalid grant error description Bad credentials 我想通过以下响应代码来增强此响应 responsecode

随机推荐

  • JoptionPane 显示确认对话框

    我有一个Java程序 当我运行该程序时 它会给我一个 GUI 如我所附 当我想关闭它时 它会弹出一个确认对话框 如果我按 是 按钮 它将使用以下命令退出程序System exit public static void main String
  • 如何对列表进行排序,其中正值位于负值之前,并且值分别排序?

    我有一个包含正数和负数混合的列表 如下所示 lst 1 2 10 12 4 5 9 2 我想要完成的任务是对列表进行排序 其中正数位于负数之前 也分别排序 期望的输出 1 2 9 10 12 5 4 2 我能够计算出第一部分的排序 其中正数
  • 将具有相同键的节点添加到属性树中

    我正在使用 Boost 的属性树来读取和写入 XML 使用我制作的电子表格应用程序 我想将电子表格的内容保存到 xml 这是一项学校作业 因此我需要使用以下 XML 格式
  • Swift 版本构建配置

    在 Swift v4 2 中 他们引入了扩展Bool toggle 我从早些时候就有了这个扩展 现在当我用 Xcode10 编译时它说Ambiguous use of toggle 如果 Swift 版本是 4 2 或更高版本 我试图让它忽
  • iOS 8 UIView 在键盘出现时不向上移动

    我正在开发一个聊天应用程序 其中有UITableView and a UIView含有一个UITextField and a UIButton在里面 我正在使用以下代码来移动UIView当键盘出现时向上 void keyboardWillS
  • Spring Security Saml 和 SP 应用程序的无状态会话

    我尝试运行启动示例 spring security saml boot https github com vdeotaris spring boot security saml sample https github com vdenota
  • 以编程方式完成 TFS Pull 请求

    使用Microsoft TeamFoundationServer Client 15 112 1 连接到TFS 2017 更新 2服务器我们可以获取有关现有 PR 的详细信息 如下所示 var connection new VssConne
  • 仅针对一个框架的 MSBuild 目标

    我有一个具有多框架目标的项目
  • 不安全的 JavaScript 尝试使用 URL 启动框架导航

    这有点复杂 请耐心等待 网站 A 有一个包含网站 B 的 iframe 网站 B 有一个包含网站 C 的 iframe 网站 C 上有一个按钮 单击后 我想刷新网站 B 的 url 下面是调用的 javascript 用于从网站 C 刷新网
  • 多线程 Objective-C 访问器:GCD 与锁

    我正在争论是否要转向基于 GCD 的多线程访问器模式 多年来我一直在访问器中使用基于自定义锁的同步 但我发现了一些信息 GCD简介 http www mikeash com pyblog friday qa 2009 08 28 intro
  • 如何删除 jQuery Mobile 样式?

    我之所以选择 jQuery Mobile 是因为它的动画功能和动态页面支持 而不是其他框架 然而 我在造型方面遇到了麻烦 我想保留基本页面样式以便执行页面转换 但我还需要完全自定义标题 列表视图 按钮 搜索框的外观 仅处理颜色是不够的 我需
  • Jetty + intellij idea :: 添加库

    I get java lang NoClassDefFoundError当我将 3d party 库添加到我的项目中时 我尝试将库添加到 web inf 模块依赖项 服务器库 但它不起作用 使用jetty和idea将库添加到项目的正确方法是
  • Gradle:应用程序和测试应用程序的已解决版本不同

    当我添加依赖项时 compile net bytebuddy byte buddy android 0 7 8 在我的应用程序中 我收到此错误 Conflict with dependency net bytebuddy byte budd
  • SQL 条件排序依据

    我正在两个表上进行连接 一个是用户表 另一个是高级用户列表 我需要让高级会员首先出现在我的查询中 然而 仅仅因为他们位于高级用户表中并不意味着他们仍然是高级会员 还有一个 IsActive 字段也需要检查 所以基本上我需要按以下顺序返回结果
  • 我正在尝试从某个检查点 (Tensorflow) 恢复训练,因为我正在使用 Colab 并且 12 小时还不够

    这是我正在使用的代码的一部分 checkpoint dir training checkpoints1 checkpoint prefix os path join checkpoint dir ckpt checkpoint tf tra
  • 单元测试异步操作

    我想对执行异步操作的方法进行单元测试 Task Factory StartNew gt method to test and return value var result LongRunningOperation 我在单元测试 用 c 编
  • 如何向 ASP.NET 托管的 ICS iCalendar for Outlook 添加身份验证

    我有一个 ASP NET 应用程序 它动态创建 ICS 日历 使用 DDay iCal 库 http rbalajiprasad blogspot co uk 2012 11 mvc c create ical calendar ics f
  • 如何确定 Accumulo 表可见性?

    我们有一个 Accumulo 实例 其中一些表包含使用可见性标记写入的数据 而我们当前的用户都没有这些标记 由于各种原因 我们不知道表中的所有可见性字符串 标记是什么 因此 我们有孤立数据 Accumulo root 用户或其他用户是否可以
  • IntelliJ IDEA全局环境变量配置

    我需要在我的所有想法运行配置中使用环境变量 我目前使用run gt 编辑配置 gt 然后在选定的配置中输入环境变量 然而 当我需要运行单独的测试场景时 这是非常乏味的 因为每个测试场景都会创建一个新的运行配置 并且我需要重新输入变量 我尝试
  • Liferay 7 中自定义登录后操作中的 LAST_PATH 重定向

    我正在 Liferay 7 中实现自定义登录 一个用于登录挂钩 portlet 的模块 一个用于 ActionCommand 的模块 我还为登录后事件生成了类 问题是重定向在此类或登录挂钩 porlet 的 JSP 上都不起作用 这是我的