目前 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 框架使用的复杂度!
目前 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 框架使用的复杂度!