在实现RowLevelSecurity

时间:2015-06-11 05:06:56

标签: broadleaf-commerce

我正在尝试实施RowLevelSecurity,以便根据存储限制管理员用户。我已经关注了此网址 **

  

http://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/admin/admin-row-level-security

** 我已经覆盖了这些方法: addFetchRestrictions()addFetchRestrictionsRoot()

因此,当我在管理应用程序中登录时,当我点击“产品”链接时,我可以访问除产品链接之外的所有链接,然后我正在获取ClassCastException,如下所示:

  

" java.lang.ClassCastException:   org.broadleafcommerce.openadmin.server.security.domain.AdminUserImpl   无法转换为com.iwn.admin.user.MyAdminUser"

当我调试我的应用程序时,我知道我在以下几行中得到了Exception:

Store adminStore = ((MyAdminuser) currentUser).getStore();

任何人都可以帮我解决这个问题,谢谢。

1 个答案:

答案 0 :(得分:0)

如果您已将AdminuserImpl扩展到自定义MyAdminuser,请确保您已按照http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial中的所有说明操作。

如果您已经这样做但仍依赖于初始数据导入,那么您的数据可能是错误的。假设您有一个名为MY_ADMIN_USER的表(映射到MyAdminuser Hibernate对象),请确保该表中的条目包含BLC_ADMIN_USER中的所有条目。否则,Hibernate只能返回AdminUserImpl的实例,而不是扩展的MyAdminuser

确保这一点的一种简单方法是使用此SQL查询:

INSERT INTO MY_ADMIN_USER (ADMIN_USER_ID) (SELECT blc.ADMIN_USER_ID FROM BLC_ADMIN_USER AS blc);