Scala 由于隐式参数错误,删除身份验证信息失败

Scala 由于隐式参数错误,删除身份验证信息失败,scala,playframework,silhouette,Scala,Playframework,Silhouette,我正在使用剪影管理我的Play应用程序中的身份验证。注册、登录和授权工作正常。但是,当尝试注销(=删除)用户帐户时,删除相应的身份验证信息失败 特别是,以下行引发异常: authinformepository.remove(LoginInfo(credentialsProvider.id,用户名)) (authinformepository是一个注入的authinformepository,配置为一个delegableauthinformepository) 例外情况: 查看所讨论的方法,它需

我正在使用剪影管理我的Play应用程序中的身份验证。注册、登录和授权工作正常。但是,当尝试注销(=删除)用户帐户时,删除相应的身份验证信息失败

特别是,以下行引发异常:

authinformepository.remove(LoginInfo(credentialsProvider.id,用户名))
authinformepository
是一个注入的
authinformepository
,配置为一个
delegableauthinformepository

例外情况:

查看所讨论的方法,它需要一个隐式参数
隐式标记:ClassTag[T]
。那一个在我看来似乎是错误的,但我不完全理解正在发生什么,或者预期会发生什么

  • 应该如何正确调用
    authinformepository#remove
    ?我是否需要手动将
    ClassTag
    对象放入正确的上下文中,以避免推断出
    任何内容
  • 为什么隐式
    ClassTag
    参数甚至是相关的
为什么隐式
ClassTag
参数甚至是相关的

ClassTag
是相关的,因为
remove
需要这样的隐式:

我是否需要手动将
类标记
对象放入正确的上下文中以 避免推断出任何内容

我猜反之亦然,您应该指定
T
(如果没有这样的指定,
T
现在被推断为
Nothing
),并将找到适当的隐式表达式

请尝试以下选项之一:

authInfoRepository.remove[CasInfo](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OAuth1Info](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OAuth2Info](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OpenIDInfo](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[PasswordInfo](LoginInfo(credentialsProvider.id, username))
为什么隐式
ClassTag
参数甚至是相关的

ClassTag
是相关的,因为
remove
需要这样的隐式:

我是否需要手动将
类标记
对象放入正确的上下文中以 避免推断出任何内容

我猜反之亦然,您应该指定
T
(如果没有这样的指定,
T
现在被推断为
Nothing
),并将找到适当的隐式表达式

请尝试以下选项之一:

authInfoRepository.remove[CasInfo](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OAuth1Info](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OAuth2Info](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[OpenIDInfo](LoginInfo(credentialsProvider.id, username))
authInfoRepository.remove[PasswordInfo](LoginInfo(credentialsProvider.id, username))

啊,现在我明白了:类型是必需的,因为支持不同的身份验证方法。谢谢啊,现在我明白了:类型是必需的,因为支持不同的身份验证方法。谢谢