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

Liferay在没有特定角色时更改默认重定向页面,liferay,liferay-6,liferay-theme,Liferay,Liferay 6,Liferay Theme,这基本上是两个问题?首先,我想知道当用户试图访问具有超级用户查看权限的页面时,如何更改liferay重定向的页面。默认情况下,Liferay指向localhost:web/guest/home,在那里他们有自己的登录页面。在我的应用程序中,我有一个不同的登录页,我想重定向到下一页。我在浏览网页时发现,通过设置auth.login.site.url=/whereiwontittopoint实际上应该将我重定向到那里。但事实并非如此。我正在使用Liferay 6.0.6社区版。有人这样做过吗?这是正

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

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

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

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

1。在portal.properties中设置
default.landing.page.path=/whereiOntitopoint
,请参见


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

对于第二个内容,有点老套的方法如下

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属性指定的页面发出重定向

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

    auth.forward.last.paths=/sign-in 
    
    登录将是您的页面名称

  • 第二个问题的答案是,您必须创建一个钩子扩展操作,并在portal-ext.properties中创建以下条目

    login.events.post=com.liferay.portal.events.LoginPostAction,com.liferay.portal.events.CustomLandingPageAction
    

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

    您一定误解了我的意思。你对我的第一个问题给出的答案是如何设置不同的登录页。我在问如何更改liferay重定向登录的位置。我解决了那个问题,我犯了一个错误,应该使用auth.login.url=而不是我使用的那个。对于第二个问题,该操作将在每次请求后执行,这对于生产来说非常昂贵。我在问,当我定义一个自定义角色并将其添加到页面时,是否有办法,如果尚未获得该角色的用户尝试访问请求该角色的页面,我是否也可以定义liferay将做什么。您可以尝试覆盖错误页面事件
    servlet.service.events.pre.error.page