Как создать класс данных реализует специальные UserDetails Spring Secuirty

Я пытаюсь перенести некоторые примеры кода spring-webflux в kotlin.

В настоящее время я хочу преобразовать образец Spring Mongo в kotlin. Существует User , оригинальная версия Data Mongo выглядит:

 @Data @ToString @Builder @NoArgsConstructor @AllArgsConstructor @Document class User implements UserDetails { @Id private String id; private String username; private String password; @Builder.Default() private boolean active = true; @Builder.Default() private List<String> roles = new ArrayList<>(); @Override public Collection<? extends GrantedAuthority> getAuthorities() { return AuthorityUtils.createAuthorityList(roles.toArray(new String[roles.size()])); } @Override public boolean isAccountNonExpired() { return active; } @Override public boolean isAccountNonLocked() { return active; } @Override public boolean isCredentialsNonExpired() { return active; } @Override public boolean isEnabled() { return active; } } 

Интерфейс UserDetails включает некоторые методы getXXX и isXXX, как добавить override к имени username и password в kotlin?

BTW: В настоящее время я удалил UserDetails в версии kotlin, проверьте здесь :

 @Document data class User( @Id var id: String? = null, var username: String? = null, var password: String? = null, var active: Boolean = true, var roles: List<String> = ArrayList() ) 

ОБНОВЛЕНИЕ : Как добавить к нему интерфейс UserDetails ? , этот вопрос полезен .

Новая проблема заключается в том, что при уничтожении использования она не работает.

 (id, username, password, active, roles) = <a user> 

User находится на странице https://github.com/hantsy/spring-reactive-sample/blob/master/kotlin-gradle/src/main/kotlin/com/example/demo/User.kt . В настоящее время я прокомментировал версию, реализованную в UserDetails . Если я использую прокомментированные коды (User: UserDetails), коды Beans.kt в Beans.kt будут сообщать об ошибках в среде IDE. Ошибки возникают при username и password : уничтожение инициализатора объявления типа User! должна иметь функцию component2 .

 data class User( // inherits from UserDetails private val username: String, private val password: String, private val isEnabled: Boolean, //Disabled account can not log in private val isCredentialsNonExpired: Boolean, //credential can be expired,eg. Change the password every three months private val isAccountNonExpired: Boolean, //eg. Demo account(guest) can only be online 24 hours private val isAccountNonLocked: Boolean, //eg. Users who malicious attack system,lock their account for one year private val authorities: Set<GrantedAuthority>, // inherits from Tree.If the user is not a tree structure, can be ignored val id: Long, val parentId: Long? = null, val lft: Int? = null, // preorder tree traversal algorithm val rgt: Int? = null, // preorder tree traversal algorithm val depth: Int? = null, // or levels val isLeaf: Boolean? = null, val teamTotal: Int? = null, // The number of all subordinates val childrenTotal: Int? = null, //The number of all directly under the subordinate //Custom attributes val tenantId: Long, //We are the platform + tenant model val role: Set<Role>, // TENANT, SUBACCOUNT, DEFAULT_GROUP, MEMBER, GUEST val platform: Platform, // PC, IOS, ANDROID, WAP, INTERNAL val deviceToken: String? = null, //or machine code val ip: InetAddress //Inet4Address or Inet6Address ) : UserDetails, Tree(id, parentId) { override fun getUsername(): String = username override fun getPassword(): String = password override fun isEnabled(): Boolean = isEnabled override fun isCredentialsNonExpired(): Boolean = isCredentialsNonExpired override fun isAccountNonExpired(): Boolean = isAccountNonExpired override fun isAccountNonLocked(): Boolean = isAccountNonLocked override fun getAuthorities(): Set<out GrantedAuthority> = authorities }