Java Spring 不清楚应该从 SecurityContext 的 getDetails 得到什么
Java Spring is not clear about what should one expect from getDetails of SecurityContext
我如何确定以下行 return 在今天和 Spring 的未来版本中会是什么?
我没有找到关于此的文档。
我如何确定 Spring 决定分配给该字段的内容?
SecurityContextHolder.getContext().getAuthentication().getDetails()
根据this,您可以期待西班牙宗教裁判所
期待 null
除非你在那里放东西。
这仅取决于所选的实施方式和您的操作。您提供此信息,而不是 Spring。 Spring 刚刚制作了一个字段来保存与身份验证实例相关的其他数据,并允许您设置您想要的所有内容。
编辑:
Authentication
的一个子类 - AbstractAuthenticationToken
定义了 getDetails()
并且它的 known implementing classes 都没有覆盖此方法。这意味着 setDetails
是一种从外部更改这些细节的方法。因此,所有工作都转移到一种机制,该机制填充通常由您控制的身份验证(例如AuthenticationManager
)。
Java Spring is not clear about what should one expect from getDetails
of SecurityContext
我们不能这么说,因为我认为 Spring 开发人员已将此选择权交给了安全提供程序实现。
如果您有自定义实现,您的安全提供商必须使用 AbstractAuthenticationToken 之一。作为 AbstractAuthenticationToken 的一部分,您可以设置详细信息。 AbstractAuthenticationToken.setDetails(details);
例如,我使用CAS(中央认证服务)。 CAS 使用 UsernamePasswordAuthenticationToken 并使用 DefaultServiceAuthenticationDetails
设置详细信息
其中包含以下详细信息:
详细信息:org.springframework.security.cas.web.authentication.DefaultServiceAuthenticationDetails@950d14e5:RemoteIpAddress:xxx.xx.xx.xxx; SessionId:A0A0A0A0BB1B1B1B1ServiceUrl:https://local.example.com/test_application/j_spring_cas_security_check
这就是我们使用 details 对象的方式
public class CustomAuthentication implements Authentication {
<code>private Object details
;
@Override
public Object getDetails(){
return details;
}
/** Sets the details */
public void setDetails(Object details){
this.details = details;`enter code here`
}}
你可以看到,Spring 只支持 getDetails() 函数,我们可以为这个对象设置任何东西,而 getDetails() 将 return 正是那个数据。
我如何确定以下行 return 在今天和 Spring 的未来版本中会是什么? 我没有找到关于此的文档。 我如何确定 Spring 决定分配给该字段的内容?
SecurityContextHolder.getContext().getAuthentication().getDetails()
根据this,您可以期待西班牙宗教裁判所
期待 null
除非你在那里放东西。
这仅取决于所选的实施方式和您的操作。您提供此信息,而不是 Spring。 Spring 刚刚制作了一个字段来保存与身份验证实例相关的其他数据,并允许您设置您想要的所有内容。
编辑:
Authentication
的一个子类 - AbstractAuthenticationToken
定义了 getDetails()
并且它的 known implementing classes 都没有覆盖此方法。这意味着 setDetails
是一种从外部更改这些细节的方法。因此,所有工作都转移到一种机制,该机制填充通常由您控制的身份验证(例如AuthenticationManager
)。
Java Spring is not clear about what should one expect from getDetails of SecurityContext
我们不能这么说,因为我认为 Spring 开发人员已将此选择权交给了安全提供程序实现。
如果您有自定义实现,您的安全提供商必须使用 AbstractAuthenticationToken 之一。作为 AbstractAuthenticationToken 的一部分,您可以设置详细信息。 AbstractAuthenticationToken.setDetails(details);
例如,我使用CAS(中央认证服务)。 CAS 使用 UsernamePasswordAuthenticationToken 并使用 DefaultServiceAuthenticationDetails
设置详细信息其中包含以下详细信息:
详细信息:org.springframework.security.cas.web.authentication.DefaultServiceAuthenticationDetails@950d14e5:RemoteIpAddress:xxx.xx.xx.xxx; SessionId:A0A0A0A0BB1B1B1B1ServiceUrl:https://local.example.com/test_application/j_spring_cas_security_check
这就是我们使用 details 对象的方式
public class CustomAuthentication implements Authentication { <code>private Object details
;@Override public Object getDetails(){ return details; } /** Sets the details */ public void setDetails(Object details){ this.details = details;`enter code here` }}
你可以看到,Spring 只支持 getDetails() 函数,我们可以为这个对象设置任何东西,而 getDetails() 将 return 正是那个数据。