Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Liferay 7角色/权限问题:您没有访问此portlet所需的角色_Spring_Liferay_Hook_Portlet_Spring Portlet Mvc - Fatal编程技术网

Spring Liferay 7角色/权限问题:您没有访问此portlet所需的角色

Spring Liferay 7角色/权限问题:您没有访问此portlet所需的角色,spring,liferay,hook,portlet,spring-portlet-mvc,Spring,Liferay,Hook,Portlet,Spring Portlet Mvc,我在Liferay 7.3.0中创建了一个PortletMVC,它在Tomcat 9中成功部署,但当我在门户中拖动它时,我看不到它,显示的消息如下: " You do not have the roles required to access this portlet. " [图片] 我检查了页面的权限,它是公共的,客人可以查看它 如果有什么不对劲,请任何人帮忙,谢谢。 这是类控制器: @Component( immediate = true, property = {

我在Liferay 7.3.0中创建了一个PortletMVC,它在Tomcat 9中成功部署,但当我在门户中拖动它时,我看不到它,显示的消息如下:

" You do not have the roles required to access this portlet.
" 
[图片]

我检查了页面的权限,它是公共的,客人可以查看它

如果有什么不对劲,请任何人帮忙,谢谢。 这是类控制器:

@Component(
    immediate = true, 
    property = {
            "path=/login/login",
            "javax.portlet.security-role-ref=guest,power-user,user",
    },
    service = StrutsPortletAction.class
)
public class BladePortletAction extends BaseStrutsPortletAction {

    @Override
    public void processAction(
            StrutsPortletAction originalStrutsPortletAction,
            PortletConfig portletConfig, ActionRequest actionRequest,
            ActionResponse actionResponse)
        throws Exception {....}
控制台显示:

[SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app

从您的代码中,我可以看出您正在使用: BaseStrutsPortletAction,但它与MVCPortlet不同。 请注意,自Liferay 7.0以来,BaseStrutsPortletAction机制不再适用于大多数portlet,因为Liferay不再使用Struts操作,而是使用Liferay MVC命令,请参见:

我建议使用Liferay Developer Studio,这样您就可以在portlet开发期间看到哪些类/方法可用

如果您需要进一步帮助,我很乐意提供帮助,请发送更多详细信息,如:您希望实现的目标,以及更详细的步骤,如:

  • 从以下位置下载Liferay门户:
  • 已执行:
    刀片更新
    mkdir lr_工作区
    刀片初始化
  • 已编辑:gradle.properties并确保其包含Liferay 7.3.0特定值: liferay.version.default=7.3 profile.name=gradle liferay.workspace.bundle.url= app.server.tomcat.version=9.0.33 liferay.workspace.target.platform.version=7.3.0 target.platform.index.sources=false
  • 通过执行以下命令创建我的Portlet: blade create-t mvc portlet-v 7.3-p com.liferay.test MVCPortlet7303
  • 等等
    亲切的问候,
    彼得

    正如错误所说:

    [SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app
    
    您还没有将唯一的ID附加到您的portlet,您应该知道,在Liferay中,每个portlet都有一个使用属性
    javax.portlet.name
    的唯一ID(键)

    以该代码为例:

    @Component(
            immediate = true,
            property = {
                    "javax.portlet.name=com_fr_bladeExamplePortlet"
            },
            properties = "OSGI-INF/portlet.properties",
            service = Portlet.class
    )
    public class SearchPortlet extends MVCPortlet {
    }
    
    如果您使用的是Liferay DXP,我建议您使用MVCPortlet,它简单、轻便、有效且易于使用


    致以最诚挚的问候,

    Hello Peter,感谢您的回复,但问题与BaseStrutsPortletAction无关,因为每当我使用此命令(即普通的新portlet)创建一个新的portlet mvc时,“blade create-t mvc portlet-v 7.0-p packageName-c类名BladealPortletAction-b maven”我在进入该页面时在控制台中收到了错误消息和。也许这和许可证有关,我不知道确切的。。。刷新时控制台:[SecurityPortletContainerRapper:235]无效的portlet ID/BladeAllAction_WAR_BladeAllAction我无法在liferay-ce-portal-tomcat-7.3.0-ga1-20200127150653953.tar.gz捆绑包上重现角色相关或无效的portlet ID错误。我的步骤:blade init-b maven blade create-t mvc portlet-v 7.3-p packageName-c className bladeallettaction-b maven mvn package我将构建的portlet部署到正在运行的7.3门户,并将className portlet添加到欢迎页面。当您描述您正在做的事情时,请随意添加或修改我的步骤,请在这里添加这些步骤,以及您的pom.xml欢呼:)