問題
- ページのレンダリング時にエラーが発生すると、ポータル アクセスをブロックする重大な問題が発生します。
- ログには、次のようなトレースが表示されます。
com.liferay.portal.kernel.events.ActionException: java.lang.IllegalArgumentException: Someone may be trying to circumvent the permission checker: {companyId=20155, name=com.liferay.portal.kernel.model.Layout, primKey=361751, scope=4} com.liferay.portal.kernel.events.ActionException: java.lang.IllegalArgumentException: Someone may be trying to circumvent the permission checker: {companyId=20155, name=com.liferay.portal.kernel.model.Layout, primKey=361751, scope=4} at com.liferay.portal.events.ServicePreAction.run(ServicePreAction.java:154) at com.liferay.portal.kernel.events.Action.processLifecycleEvent(Action.java:34) at com.liferay.portal.events.EventsProcessorUtil.process(EventsProcessorUtil.java:88) at com.liferay.portal.events.EventsProcessorUtil.process(EventsProcessorUtil.java:60) at com.liferay.portal.internal.servlet.MainServlet._processServicePre(MainServlet.java:1146) at com.liferay.portal.internal.servlet.MainServlet.service(MainServlet.java:580) ...
- 原因:
Caused by: java.lang.IllegalArgumentException: Someone may be trying to circumvent the permission checker: {companyId=20155, name=com.liferay.portal.kernel.model.Layout, primKey=361751, scope=4} at com.liferay.portal.security.permission.AdvancedPermissionChecker._hasGuestPermission(AdvancedPermissionChecker.java:1463) at com.liferay.portal.security.permission.AdvancedPermissionChecker._hasPermissionImpl(AdvancedPermissionChecker.java:1479) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:306) at com.liferay.portal.security.permission.BasePermissionChecker.hasPermission(BasePermissionChecker.java:114) at com.liferay.staging.security.internal.permission.StagingPermissionChecker.hasPermission(StagingPermissionChecker.java:135) at com.liferay.portal.service.permission.LayoutPermissionImpl.containsWithoutViewableGroup(LayoutPermissionImpl.java:281) at com.liferay.portal.service.permission.LayoutPermissionImpl.containsWithoutViewableGroup(LayoutPermissionImpl.java:329) at com.liferay.portal.service.permission.LayoutPermissionImpl.containsWithViewableGroup(LayoutPermissionImpl.java:343) at com.liferay.portal.service.permission.LayoutPermissionImpl._contains(LayoutPermissionImpl.java:605) at com.liferay.portal.service.permission.LayoutPermissionImpl.contains(LayoutPermissionImpl.java:147) at com.liferay.portal.kernel.service.permission.LayoutPermissionUtil.contains(LayoutPermissionUtil.java:64) at com.liferay.portal.events.ServicePreAction._hasAccessPermission(ServicePreAction.java:747) at com.liferay.portal.events.ServicePreAction._getViewableLayoutComposite(ServicePreAction.java:707) at com.liferay.portal.events.ServicePreAction._getDefaultViewableLayoutComposite(ServicePreAction.java:570) at com.liferay.portal.events.ServicePreAction._initThemeDisplay(ServicePreAction.java:1169) at com.liferay.portal.events.ServicePreAction.servicePre(ServicePreAction.java:177) at com.liferay.portal.events.ServicePreAction.run(ServicePreAction.java:151) ... 76 more Caused by: com.liferay.portal.kernel.exception.NoSuchResourcePermissionException:{companyId=20155, name=com.liferay.portal.kernel.model.Layout, primKey=361751,scope=4} at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.hasResourcePermission(ResourcePermissionLocalServiceImpl.java:1022) ...(removed lines) at com.liferay.portal.monitoring.internal.aop.ServiceMonitorAdvice.invoke(ServiceMonitorAdvice.java:79) ...(removed lines) at com.liferay.portal.kernel.service.ResourceLocalServiceUtil.hasUserPermissions(ResourceLocalServiceUtil.java:345) at com.liferay.portal.security.permission.AdvancedPermissionChecker._hasGuestPermission(AdvancedPermissionChecker.java:1454)
Environment
- Liferay DXP 7.2
解決策
- ログは、ID 361751 のレイアウトに関連する問題を明らかにします。
- 何が起こっている?
- ポータルがサイト ページをレンダリングするとき、さらに多くのサイト ページも処理し (
ServicePreAction._getDefaultViewableLayoutComposite(ServicePreAction.java:570)
で)、それらの権限をチェックします。 - これらのページの 1 つにこれらのアクセス許可に関連する矛盾がある場合、プロセスが中断され、ページをレンダリングできず、サイトがブロックされます。
- ポータルがサイト ページをレンダリングするとき、さらに多くのサイト ページも処理し (
- これは重大な問題であるため、問題を回避するのに役立つ 2 つのアクション ポイントを提案します。
- 簡単な回避策: 「壊れた」レイアウトを特定したら、その groupId id を変更して、サイトのレンダリング時に処理されないようにすることができます。 たとえば、スクリプトを使用してこれを行うことができます。 いずれにせよ、サイトのブロックを回避するためにこのオプションを提案するだけであり、最終的な解決策ではありません.
- 最終的な解決策: Liferay サポートに新しいチケットを開いて、 LPS-142128 を含む新しいホットフィックス (必要な場合) を要求することができます この修正により、エラーが発生したときにページの処理を続行できるため、エラーは発生しませんポータルをブロックします。
追加情報