为啥在自定义身份验证和登录模块中使用克隆?
Posted
技术标签:
【中文标题】为啥在自定义身份验证和登录模块中使用克隆?【英文标题】:Why Clone is used in Custom Authentication and login Modules?为什么在自定义身份验证和登录模块中使用克隆? 【发布时间】:2015-01-09 04:47:35 【问题描述】:身份验证器的克隆方法创建对象成员的深层副本。
public WorkLightAuthenticator clone() throws CloneNotSupportedException
MyCustomAuthenticator otherAuthenticator = (MyCustomAuthenticator) super.clone();
otherAuthenticator.authenticationData = new HashMap<String, Object>(authenticationData);
return otherAuthenticator;
-
为什么我们需要对象成员的副本?
如果在使用副本的地方创建了副本?
使用克隆的任何场景及其存储位置?
“authenticationData”中复制的所有数据是什么?
【问题讨论】:
【参考方案1】:此方法在旧版本的 Worklight 中使用,并且出于向后兼容性的原因仍然存在。您可以选择不使用它并抛出不支持克隆的异常。
当时,它用于设备 SSO 等场景,其中对身份验证上下文进行了克隆,以便通过内存在会话之间传递对象。
这些天不再这样做了(从 Worklight 6.1 左右开始)。今天,此操作是通过 Worklight 数据库完成的。
authenticationData 包含从身份验证器传播到登录模块的数据;每个领域。
如果以上有帮助,请告诉我。
【讨论】:
以上是关于为啥在自定义身份验证和登录模块中使用克隆?的主要内容,如果未能解决你的问题,请参考以下文章
Grails spring security如何在自定义身份验证中记住我?
如何在自定义 Spring security 3.0 身份验证中正确处理异常?