Как создать класс данных, реализующий специфичные для Spring Secuirty UserDetails

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

В настоящее время я хочу преобразовать мой Spring Data Mongo образец для котлина. Есть 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?

Кстати: в настоящее время я удалил 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), коды desstruction в Beans.kt будут сообщать об ошибках в IDE. Ошибки возникают на username и password: удаление инициализатора объявления типа User! должна иметь функцию component2.


person Hantsy    schedule 27.08.2017    source источник
comment
Ваша проблема в декларации деструктуризации, верно? Не могли бы вы привести полный пример кода? не вижу там ошибки   -  person s1m0nw1    schedule 27.08.2017
comment
@ s1m0nw1 Обновлена ​​и добавлена ​​ссылка на текущий класс пользователя.   -  person Hantsy    schedule 27.08.2017