loadUserByUsername在springboot身份验证中不覆盖任何内容



我是微服务的新手。我想访问用户名(电子邮件(和密码来自作为用户注册服务的另一服务。当我创建身份验证服务并尝试访问电子邮件密码获取编译时错误。

e: E:Nil ProjectsNewMicroServicesecurity-servicesrcmainkotlincomsecuritysecurityserviceserviceJwtUserDetailsService.kt: (16, 5): 'loadUserByUsername' overrides nothing

这是我的代码jwtuserdetailsservice.kt

package com.security.securityservice.service
import com.security.securityservice.UserRepository
import com.security.securityservice.entity.User
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.stereotype.Service
@Service
class JwtUserDetailsService {
@Autowired
private lateinit var userDTO:UserRepository
@Throws(Exception::class)
override fun loadUserByUsername(email: String?): UserDetails {
val user: User =userDTO.findUserByEmail(email)
if (userDTO == null){
UsernameNotFoundException("your email id doesn't exist" + email)
}
return org.springframework.security.core.userdetails.User(user.userId.email,user.userId.password,ArrayList())
}

}

上面我定义了user.userId.email和user.userId.password,因为我在我的User.kt中定义userId。这个userId来自userRegistration服务,此id包含用户名和密码,但我无法访问身份验证服务中的电子邮件和密码I我在这个特定的点上出错了";回来org.springframework.security.core.userdetails.User(User.userId.email,User.userId=password,ArrayList(((">

用户.kt

package com.security.securityservice.entity
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id
@Entity
data class User(
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
val userAuthId:Long=-1,
val otp:Int=0,
val token:String="",
var userId:Long=-1,
)

ResponseTemplate.kt

package com.security.securityservice.VO
import com.security.securityservice.entity.User
data class ResponseTemplate(
val user:User?=null,
val userRegistration: UserRegistration?=null,
)

UserRegistration.kt

package com.security.securityservice.VO
data class UserRegistration(
val userId:Long=-1,
val firstName:String="",
val lastName:String="",
val email:String="",
)

这与微服务无关,而与简单的OOP编程无关。当你说孩子类override的某个行为时,它之前必须有一个,在你的情况下是None。仔细观察类JwtUserDetailsService的定义,不存在父类/也不存在任何接口,因此没有什么可重写的。So-line

override fun loadUserByUsername(email: String?): UserDetails {

永远不会编译。我认为您应该在这里实现*接口,以提供行为UserDetailsService。您可以看到loadUserByUsername来自接口UserDetailsService现在,代码可以编译,但为了使身份验证正确工作,您必须与身份验证管理器正确集成。

相关内容

最新更新