【问题标题】:Liferay : How to show a Configured Page once User Enters Valid CredentialsLiferay:一旦用户输入有效凭据,如何显示配置页面
【发布时间】:2013-02-25 05:17:23
【问题描述】:

我使用的是 Liferay 6.1 版本。

一旦用户输入 http:localhost ,我将显示名为“/ravi”的网页,其中包含我的自定义门户,如图所示

我已经在portal-ext.properties下配置了这个属性,如图所示

auth.forward.by.last.path=true
default.landing.page.path=/web/guest/ravi

请查看当用户输入 http:localhost 时显示的我的自定义 Portlet 的屏幕截图

现在我的要求是,如果他输入有效的 crendentails,我需要显示另一个页面(“/web/guest/test”)。

在我的 processAction 类中,我正在这样做

public class ValidateUser extends MVCPortlet {
    public void processAction(ActionRequest request, ActionResponse response) {

        String userName = (String) request.getParameter("userName");
                String password = (String) request.getParameter("password");
        try {
//  Contatcs DB and validates the credentials here 
// Please let me know how can i show the Configured Page if his credentials are valid ??
        } 
               catch (Exception e) {
        }

    }


}

编辑部分

非常感谢您对默认 login.events.post 的回答。

我是 Liferay 的新手,所以我可能在这里做错了,所以如果我做错了什么,请帮助我。

我按照以下步骤操作:

  1. 创建了一个名为“MyLogon”的新 Portlet,并在其 view.jsp 中创建了一个包含两个文本字段(登录和密码)和一个提交按钮的表单。 单击该提交按钮时,我实际上是在调用我的 processAction 方法并进行数据库调用以验证来自 mysql db 的用户。

2. 然后我在 /web/guest/ravi 中创建了一个页面,并将这个“MyLogon”Portlet 添加到这个新页面 /web/guest/ravi

  1. 然后在portal-ext.properties下配置这个属性

    auth.forward.by.last.path=true default.landing.page.path=/web/guest/ravi

这就是我所做的。

并且当输入http:localhost:8080时,它显示了taht页面。

如果我做错了什么请告诉我

编辑第二部分

我已经理解了你的部分答案,我有这些问题。 你能帮忙吗

我需要根据我的数据库中存在的数据来验证用户,因此我需要执行以下操作。

  1. 我需要创建一个 Hook 来覆盖这个属性

    login.events.pre=com.LoginAction

    公共类 LoginAction 扩展 Action {

    public void run(HttpServletRequest req, HttpServletResponse res) {
    

    // 这里我需要调用数据库来验证用户凭据,然后将他重定向到我想要的页面??

    }
    

    }

【问题讨论】:

    标签: liferay-6


    【解决方案1】:

    您需要创建一个Hook 并覆盖默认的login.events.post

    以下代码供您参考,

    public class LandingPageAction extends Action {
        public LandingPageAction()
            {
    
            }
     public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException
      {
          try
          {
              doRun(request, response);
          }
          catch(Exception e)
          {
              throw new ActionException(e);
          }
      }
    
    protected void doRun(HttpServletRequest request, HttpServletResponse response) throws Exception
      {
    String homeRedirect="/web/guest/test";
    LastPath lastPath = new LastPath(StringPool.BLANK, homeRedirect); 
    session.setAttribute("LAST_PATH", lastPath);
      }
    }
    

    这里有一些我不明白的地方。您正在访问 localhost:8080,但屏幕截图显示您已经登录(有一个 SignOut 链接并且用户 Ravi Kiran 已经登录),但仍然显示了一个登录页面。

    default.landing.page.path 在您是登录 用户时出现。你打的是 localhost:8080 还是 localhost/web/guest/Ravi ?您尚未登录,因此不应重定向到 /web/guest/Ravi。

    您可以在 Liferay 中重用默认的身份验证代码。不知道您为什么要从请求参数中获取用户凭据并自己调用数据库。

    根据问题中的更新进行了编辑

    1. Liferay的默认登录页面(你刚下载并点击localhost:8080时看到的那个来自这个路径 ..\default\deploy\ROOT.war\html\portlet\login。 此路径中有一个login.jsp,您可以对其进行编辑并赋予您自己的外观和感觉。 您可以在此login.jsp 页面中找到以下条目 <portlet:param name="struts_action" value="/login/login" />

    这在../deploy/ROOT.war/WEB-INF/struts-config.xml中有对应的条目

    <action path="/login/login" type="com.liferay.portlet.login.action.LoginAction">
        <forward name="portlet.login.login" path="portlet.login.login" />
    </action>
    

    您可以打开源代码并查看com.liferay.portlet.login.action.LoginAction 方法。 这将根据您的 passwords.encryption.algorithm=passwords.digest.encoding= 执行基本身份验证 portal-ext.properties 文件中的配置。 LoginAction 将执行基本身份验证并重定向所有 用户按照default.landing.page.path= 中提到的路径 如果您希望(某些)用户(有条件地)重定向到(某些)其他路径,您可以通过编写 Hook 来使用我上面提到的代码。

    2. 通过身份验证后,您可以登录并创建一个页面(在您的情况下为“ravi”)。您可以将您的自定义 Portlet 添加到此页面。您不应该编写一个自定义 portlet,它会在您已经登录后进行身份验证

    【讨论】:

    • 感谢您的回复,请参阅我的问题中已编辑的部分。如果我犯了任何错误,请告诉我。
    • 您好 Vikas,非常感谢您的明确解释。我忽略了 End 上的东西。 Liferay 对我来说似乎很困惑,并且文件假定每个人都是 master 。我已经理解了你回答的一部分,我有这些问题。能否请你帮忙 。我在我的问题中编辑了我的问题(见第 2 部分)。
    猜你喜欢
    • 2020-02-26
    • 2017-04-22
    • 2012-08-12
    • 2013-05-22
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多