Liferay 7 角色/权限问题:您没有访问此 portlet 所需的角色
Liferay 7 Role/ Permission issue : You do not have the roles required to access this portlet
我在 Liferay 7.3.0 中创建了一个 PortletMVC,它在 Tomcat9 中成功部署,但是当我将它拖到门户中时,我看不到它,显示的消息如下:
" You do not have the roles required to access this portlet.
"
[图片]
我检查了页面的权限public,访客可以查看,
有什么不对的地方可以帮忙看看谢谢。
这是类控制器:
@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 Actions,而是使用 Liferay MVCCommands,参见:
https://help.liferay.com/hc/en-us/articles/360029005292-Upgrading-Struts-Action-Hooks
https://liferay.dev/forums/-/message_boards/message/96576834
我推荐使用 Liferay Developer Studio,这样您就可以在 portlet 开发过程中看到哪些 classes/methods 可用。
如果您需要进一步的帮助,我很乐意提供帮助,请发送更详细的信息,例如:您想要实现的目标,以及更详细的步骤,例如:
- 从以下位置下载了 Liferay 门户:https://sourceforge.net/projects/lportal/files/Liferay%20Portal/7.3.0%20GA1/liferay-ce-portal-tomcat-7.3.0-ga1-20200127150653953.tar.gz/download
- 已执行:
blade更新
mkdir lr_workspace
blade 初始化
- 编辑:gradle.properties 并确保它包含 Liferay 7.3.0 特定值:
liferay.version.default=7.3
profile.name=gradle
liferay.workspace.bundle.url=https://releases-cdn.liferay.com/portal/7.3.0-ga1/liferay-ce-portal-tomcat-7.3.0-ga1-20200127150653953.tar.gz
app.server.tomcat.version=9.0.33
liferay.workspace.target.platform.version=7.3.0
target.platform.index.sources=假
- 通过执行创建我的 Portlet:
blade 创建-t mvc-portlet -v 7.3 -p com.liferay.test MVCPortlet7303
等等
亲切的问候,
彼得
如错误所述:
[SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app
您还没有将唯一的 ID 附加到您的 portlet,您应该知道在 Liferay 中,每个 portlet 都有一个唯一的 ID (KEY) 使用 属性 javax.portlet.name
以这段代码为例:
@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,它简单、轻便、有效且易于使用。
此致,
我在 Liferay 7.3.0 中创建了一个 PortletMVC,它在 Tomcat9 中成功部署,但是当我将它拖到门户中时,我看不到它,显示的消息如下:
" You do not have the roles required to access this portlet.
"
[图片]
我检查了页面的权限public,访客可以查看,
有什么不对的地方可以帮忙看看谢谢。 这是类控制器:
@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 Actions,而是使用 Liferay MVCCommands,参见:
https://help.liferay.com/hc/en-us/articles/360029005292-Upgrading-Struts-Action-Hooks https://liferay.dev/forums/-/message_boards/message/96576834
我推荐使用 Liferay Developer Studio,这样您就可以在 portlet 开发过程中看到哪些 classes/methods 可用。
如果您需要进一步的帮助,我很乐意提供帮助,请发送更详细的信息,例如:您想要实现的目标,以及更详细的步骤,例如:
- 从以下位置下载了 Liferay 门户:https://sourceforge.net/projects/lportal/files/Liferay%20Portal/7.3.0%20GA1/liferay-ce-portal-tomcat-7.3.0-ga1-20200127150653953.tar.gz/download
- 已执行:
blade更新
mkdir lr_workspace
blade 初始化 - 编辑:gradle.properties 并确保它包含 Liferay 7.3.0 特定值: liferay.version.default=7.3 profile.name=gradle liferay.workspace.bundle.url=https://releases-cdn.liferay.com/portal/7.3.0-ga1/liferay-ce-portal-tomcat-7.3.0-ga1-20200127150653953.tar.gz app.server.tomcat.version=9.0.33 liferay.workspace.target.platform.version=7.3.0 target.platform.index.sources=假
- 通过执行创建我的 Portlet: blade 创建-t mvc-portlet -v 7.3 -p com.liferay.test MVCPortlet7303
等等
亲切的问候,
彼得
如错误所述:
[SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app
您还没有将唯一的 ID 附加到您的 portlet,您应该知道在 Liferay 中,每个 portlet 都有一个唯一的 ID (KEY) 使用 属性 javax.portlet.name
以这段代码为例:
@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,它简单、轻便、有效且易于使用。
此致,