-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
目前 aaa 框架中, 使用 Entity#id 作为 user.key 时, 直接使用 id.equels() 方式判断并获取 idValue, 这种方式存在如下问题:
-
当
Entity#id字段用其他名称命名, 则该方法会失效, 例如实体为User, id 字段命名为userId时,principal.getProperty("id")返回idValue值为null -
如果把 id 字段作为通用的
username, 即propName:propValue, 因为数据类型的原因, 无法获取principal实例 (aaa 框架中propName:propValue的数据类型默认为String类型)
建议:
-
通过反射
@Id判断是否为 id -
通用
propName:propValue方式加入 prop 数据类型的获取和转换, 兼容非String类型 prop 作为user.key的情况
另外, user.key 应具有唯一性, 可以考虑将 id 为 user.key 的情况作为通用情况处理, 在加入数据类型处理的前提下, 不将 id 作为特例情况单独判断, 统一使用 dao.findOneBy(key, value) 获取 User, 则配置项aaa.user.key 可以取消, 统一采用 principal.getName() 返回 "propName:propValue" 的方式来获取USER,以此降低 aaa 框架使用的复杂度!