2017-11-20 1 views
1

Liferay 7 포털에서 조직에 대한 사용자 정의 필드를 생성했습니다. 이제 사용자 정의 필드와 점점 PrincipalException의 가치를 얻을 싶어 - PermissionChecker가 초기화되지 :Liferay 7 : 조직 사용자 정의 필드를 가져 오는 동안 PermissionChecker가 초기화되지 않았습니다.

Long userId = (Long) req.getSession().getAttribute(WebKeys.USER_ID); 
    List<Organization> mylist = OrganizationLocalServiceUtil.getUserOrganizations(userId); 
    if (!mylist.isEmpty()) { 

     Organization organization = mylist.get(0); 

     String orgUrl = group.getFriendlyURL(); 

>>>  ExpandoBridge expandoBridge = organization.getExpandoBridge(); 
     System.out.println(expandoBridge.getAttribute("custom_field")); 
    } 

예외 : 동료에서

Caused by: com.liferay.portal.kernel.security.auth.PrincipalException: PermissionChecker not initialized 
at com.liferay.portal.kernel.service.BaseServiceImpl.getPermissionChecker(BaseServiceImpl.java:81) 
at com.liferay.portlet.expando.service.impl.ExpandoValueServiceImpl.getData(ExpandoValueServiceImpl.java:122) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:163) 
+0

내가 liferay-plugin-package.properties에 = com.liferay.portal.kernel.model.Organization을 보안 매니저의 expando 브리지 추가를 추가, PermissionChecker에 여전히 문제가 있습니다. –

답변

2

받은 대답. 이제 효과가 있습니다. 손님에 대한 사실에 사용자 정의 필드에 대한 권한을 설정하고이 코드

try { 
      User user = (User) req.getAttribute(WebKeys.USER); 
      PrincipalThreadLocal.setName(userId); 
      PermissionChecker permissionChecker; 

      permissionChecker = PermissionCheckerFactoryUtil.create(user); 
      PermissionThreadLocal.setPermissionChecker(permissionChecker); 

      Organization organization = mylist.get(0); 

      ExpandoBridge expandoBridge = organization.getExpandoBridge(); 
      System.out.println(expandoBridge.getAttribute("custom_field")); 
} catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
} 
관련 문제