我正在尝试实施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();
任何人都可以帮我解决这个问题,谢谢。
答案 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);