Liferay在没有特定角色时更改默认重定向页面

时间:2012-05-07 14:57:18

标签: liferay liferay-6 liferay-theme

这基本上是两个问题?首先,我想知道如何在用户尝试访问具有超级用户查看权限的页面时更改页面liferay重定向。 Liferay默认指向localhost:web / guest / home,他们有登录页面。在我的应用程序中,我在页面中有一个不同的登录,我想重定向到下一页。我正在浏览网页,发现通过设置auth.login.site.url=/whereiwontittopoint,我应该将其重定向到那里。但事实并非如此。我正在使用Liferay 6.0.6社区版。有没有人这样做过?这是正确的方法还是需要用钩子完成?

我的另一个问题如下。我希望在某些页面上拥有自定义角色。我希望当用户没有那个特定的角色重定向到完全不同的页面而不是默认登录时。我很确定这可以通过在某些服务上使用钩子来完成,但由于某种原因我无法识别这项服务。

EDIT 好的第一个问题我解决了问题。对于第二个问题,我得到的答案不是我想要的,可能是因为我没有正确地发布问题。这是我所做的以及我需要做的完整场景:

首先,我将每个liferay页面上的/ web / guest路径更改为web / somthing /这可能不起关键作用,但问题(一些问题)在发生时就开始了。所有想法都是如下。我正在使用spring mvc来创建应用程序。我已经为我的应用程序创建了一个后端,管理员可以从中创建页面以供其他用户查看(这不是通过转到liferay的控制面板并添加页面而是通过应用程序的逻辑来完成的)。根据某些逻辑创建页面后,我会为该特定页面创建角色(客户角色也通过代码而不是liferay管理员)。如果满足某些标准而某些标准不满足,则某些用户将获得此角色。这里出现了问题,一旦进入我的应用程序的用户试图访问一个页面(通过在浏览器中输入一个直接URL到该页面),这需要我为该页面创建的角色的视图权限和用户所做的没有适当的角色,他重定向到让我们说localhost / web /(用户名)/ home个人页面由于某种原因在默认情况下从liferay他可以查看所有其他用户的个人数据(用户名)应用程序。我的问题是如何通过代码来处理上述场景中发生的重定向。 我尝试过一次尝试实际挂钩servlet.service.events.pre动作,然后在用户访问该页面之前检查他是否具有适当的权限并实际更改了他的请求。到目前为止,我有一些问题,但我可以解决它们,但这种方法不是我不喜欢我正在寻找的,因为这个动作是在应用程序上的每个请求之前执行的(并且页面处理只是该应用程序的一小部分)这意味着我将无缘无故地执行大量代码。我想知道在创建角色时是否有任何方法可以添加异常重定向的位置?如果不是我应该挂钩什么动作,这将有助于我解决这个场景,但没有我使用挂钩servlet.service.events.pre动作创建的不必要的extrea流量?

3 个答案:

答案 0 :(得分:2)

对于第二个东西,有点hacky方式可能如下

1)定义要在portal-ext.properties中检查的角色集。您可以添加一些属性,例如 my.super.secret.roles = rolename1,rolename2

2)在portal-ext.properties中为重定向页面url添加一个属性,以便您可以在那里重定向用户。

3)为名为 checkForSecretRoles 的布局添加一个自定义属性,该属性必须是布尔值且在页面上可见。这将在每个页面的“管理”页面中显示一个复选框,以便管理员可以轻松选中或取消选中该值

4)在主题中添加一个条件(portal_normal.vm)以检查页面是否检查了secret角色,然后检查用户角色是否属于portal-ext.properties中定义的任何角色。如果是,则发出重定向到自定义重定向页面url属性

指定的页面

答案 1 :(得分:1)

  1. 对于你的第一个问题,它应该有效 -

    auth.forward.last.paths=/sign-in 
    

    登录将是您的页面名称

  2. 第二个问题的答案是,您必须创建一个Hook扩展Action并在portal-ext.properties中创建以下条目。

    login.events.post=com.liferay.portal.events.LoginPostAction,com.liferay.portal.events.CustomLandingPageAction
    
  3. 您可以在论坛上找到有关如何使用此属性的大量信息。

答案 2 :(得分:0)

在portal.properties中设置default.landing.page.path=/whereiwontittopoint

,请参阅Liferay Login page redirect

for 2.创建一个钩子,设置servlet.service.events.post=com.my.action.MyAction并实施此操作,此时您可以将用户重定向到另一个页面。