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 重定向 的相关文章

  • SSO:SP 是否应该在每个请求中验证与 IDP 的会话

    根据 SP 发起的 SSO 流程 用户尝试访问 SP 由于用户未经身份验证 因此他会被重定向到 IDP 在其中输入凭据 成功登录后 IDP 在用户的浏览器中设置 cookie 在 IDP 的域下 并使用 SAML 响应将用户重定向回 SP
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 在服务器上部署 .war 文件(Liferay+Tomcat Bundle)

    我已经准备好我的新 Liferay 网站并尝试在真实环境中测试它 我刚刚在我的服务器上成功安装了 Tomcat Liferay 捆绑包 并根据一些论坛和评论的说明将 war 文件复制到 tomcat 旁边的部署目录中 但访问该 URL 后
  • 需要将用户名和密码添加到 VB.NET Web 服务客户端中的 SOAP 标头

    我需要查询一个进行基本身份验证的 Web 服务 将用户名和密码放在请求标头中 我的客户端是用 VB NET Visual Basic Express Edition 2010 编写的 我已将 Web 服务添加到服务引用中 它为我自动生成了合
  • 如何在 firebase.auth 中更新用户电话号码(js,ts)

    我如何更新在 firebase auth 中用于身份验证的用户电话号码 Firebase 给出方法 updatePhoneNumber phoneCredential 但我们需要给予电话凭证 此凭证采用对象 interface AuthCr
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • Python:创建登录系统[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 python 创建一个登录
  • http://localhost:8080 未重定向到 opensso 登录页面

    我的 Liferay Tomcat 服务器在端口 8080 上运行 当我尝试通过输入 url 从服务器访问应用程序时http localhost 8080 它没有重定向到登录页面 而是给我错误 The Connection to abc x
  • 如何使用 Laravel 5.3 注销并重定向到登录页面?

    我正在使用 Laravel 5 3 并尝试实现身份验证系统 我用了php artisan命令make auth来设置它 我根据我的布局编辑了视图 并将其重定向到我的仪表板页面而不是主页 在设置中设置为默认值 现在 当我尝试注销时 它向我抛出
  • SQL Server 登录错误:用户“NT AUTHORITY\SYSTEM”登录失败

    我创建了一个名为 schoolPool 的应用程序池并将其分配给我的 Web 应用程序 该池的标识已设置为 LocalSystem 当我尝试从应用程序内访问数据库 即打开 SQL 连接 时 我总是收到以下错误 Login failed fo
  • ServiceStack 身份验证中 httponly ss-tok bearerToken cookie 的意义是什么

    我从安全角度理解 Set Cookie 响应标头值的 httponly 标志的概念并防止 XSS 攻击 我不明白的是 ServiceStack 对保存 bearerToken 的 ss tok cookie 做了什么 根据服务堆栈文档 ht
  • 添加验证码到 Symfony2 登录

    我需要将验证码添加到我的登录页面 我正在使用 GregwarCaptchaBundle 和 FosUserBundle 目前我已经使用以下代码在登录时显示验证码
  • 通过 JDBC 与 CLI 使用 MIT Kerberos 连接到 PostgreSQL 9.4 时出错

    我已经使用 MIT Kerberos 5 设置了 PostgreSQL 9 4 并且可以使用 psql 在 CLI 上连接 提交指纹后 我的委托人是 bgiles postgres REALM pg hba conf 有 host all
  • iPhone 应用程序拒绝 17.2:应用程序要求用户使用 Facebook 帐户登录

    我按照此处的本机 iOS 应用程序的登录说明进行操作https developers facebook com docs mobile ios build https developers facebook com docs mobile
  • 带有访问数据库的登录表单

    try OleDbConnection con new OleDbConnection Provider Microsoft Jet OLEDB 4 0 Data Source C Users jay desai Documents Vis
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • ASP.NET Core 2.0禁用自动质询

    将我的 ASP NET Core 项目升级到 2 0 后 尝试访问受保护端点不再返回 401 而是重定向到 不存在的 端点以尝试让用户进行身份验证 应用程序所需的行为只是返回 401 以前我会设置AutomaticChallenge fal
  • 我如何通过 Spring Security 创建 oauth 2 用户名密码流

    我正在尝试在 Spring Security 上实现 oauth2 用户名密码流程 但我找不到任何文档和示例代码 我正在检查 Sparklr 和 tonr insode oauth2 样本 我怎样才能实现它 oauth2 2 条腿 我如何禁
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • 使用 C# 以编程方式登录网站

    因此 我一直在网上搜索 试图了解有关如何使用 C 以编程方式登录网站的更多信息 我不想使用网络客户端 我想我想使用 HttpWebRequest 和 HttpWebResponse 之类的东西 但我不知道这些类是如何工作的 我想我正在寻找某

随机推荐

  • 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 上都不起作用 这是我的