为啥在自定义身份验证和登录模块中使用克隆?

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如何在自定义身份验证中记住我?

在自定义函数中使用 AWS cognito 多因素身份验证

如何在自定义 Spring security 3.0 身份验证中正确处理异常?

WSO2IS/APIM:如何在自定义身份验证器中分配用户角色

在自定义管理页面中显示正确的 django 身份验证框架信息