2

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

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

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

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

4

3 回答 3

2

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

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

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

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

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

于 2012-05-08T07:07:51.363 回答
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
    

您可以在论坛上找到很多关于如何使用此属性的信息。

于 2012-05-10T01:02:04.777 回答
0

1.default.landing.page.path=/whereiwontittopoint在portal.properties中设置,见Liferay登录页面重定向

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

于 2012-05-07T17:01:57.303 回答