Class 'AuthenticationProviderUserPassword' 没有实现抽象成员 public 抽象乐趣验证

Class 'AuthenticationProviderUserPassword' does not implement abstract member public abstract fun authenticate

我卡在了 micronaut 应用程序的用户身份验证中 验证函数不接受 httpRequest 参数

我收到一个错误

Class 'AuthenticationProviderUserPassword' 不是抽象的,不实现抽象成员 public abstract fun authenticate(authenticationRequest: AuthenticationRequest<(raw) Any!, (raw) Any!>! ):出版商!在 io.micronaut.security.authentication.Authenticatio

中定义

服务:

package example.micronaut.services

import io.micronaut.http.HttpRequest
import io.micronaut.security.authentication.AuthenticationFailed
import io.micronaut.security.authentication.AuthenticationProvider
import io.micronaut.security.authentication.AuthenticationRequest
import io.micronaut.security.authentication.AuthenticationResponse
import io.micronaut.security.authentication.UserDetails
import io.reactivex.Flowable
import org.reactivestreams.Publisher
import java.util.*
import javax.inject.Singleton

@Singleton // <1>
class AuthenticationProviderUserPassword : AuthenticationProvider { // <2>

    override fun authenticate(httpRequest: HttpRequest<*>?, authenticationRequest: AuthenticationRequest<*, *>?): Publisher<AuthenticationResponse> {
        if (authenticationRequest != null && authenticationRequest.identity != null && authenticationRequest.secret != null) {
            if (authenticationRequest.identity == "sherlock" && authenticationRequest.secret == "password") {
                return Flowable.just<AuthenticationResponse>(UserDetails(authenticationRequest.identity as String, ArrayList()))
            }
        }
        return Flowable.just<AuthenticationResponse>(AuthenticationFailed())
    }
}

我的build.gradle

plugins {
    id "org.jetbrains.kotlin.jvm" version "1.3.50"
    id "org.jetbrains.kotlin.kapt" version "1.3.50"
    id "org.jetbrains.kotlin.plugin.allopen" version "1.3.50"
    id "com.github.johnrengelman.shadow" version "5.2.0"
    id "application"
}

version "0.1"
group "example.micronaut"

repositories {
    mavenCentral()
    maven { url "https://jcenter.bintray.com" }
}

configurations {
    // for dependencies that are needed for development only
    developmentOnly
}

dependencies {
    implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
    implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"
    implementation "io.micronaut:micronaut-runtime"
    implementation "javax.annotation:javax.annotation-api"
    implementation "io.micronaut:micronaut-http-server-netty"
    implementation "io.micronaut:micronaut-http-client"

    implementation "io.micronaut:micronaut-security-session"

    kapt platform("io.micronaut:micronaut-bom:$micronautVersion")
    kapt "io.micronaut:micronaut-inject-java"
    kapt "io.micronaut:micronaut-validation"
    kaptTest platform("io.micronaut:micronaut-bom:$micronautVersion")
    kaptTest "io.micronaut:micronaut-inject-java"
    runtimeOnly "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8"
    runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
    testImplementation platform("io.micronaut:micronaut-bom:$micronautVersion")
    testImplementation "io.micronaut.test:micronaut-test-kotlintest"
    testImplementation "io.mockk:mockk:1.9.3"
    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.3.2"
    implementation 'junit:junit:4.12'

    compile "io.micronaut.configuration:micronaut-hibernate-jpa"
    compile "io.micronaut.configuration:micronaut-hibernate-validator"
    compileOnly "jakarta.persistence:jakarta.persistence-api:2.2.2"

    annotationProcessor "io.micronaut.data:micronaut-data-processor:1.0.2"
    runtime "com.h2database:h2"
    runtime "io.micronaut.configuration:micronaut-jdbc-tomcat"

}

test.classpath += configurations.developmentOnly

mainClassName = "example.micronaut.Application"

test {
    useJUnitPlatform()
}

allOpen {
    annotation("io.micronaut.aop.Around")
}

compileKotlin {
    kotlinOptions {
        jvmTarget = '1.8'
        //Will retain parameter names for Java reflection
        javaParameters = true
    }
}

compileTestKotlin {
    kotlinOptions {
        jvmTarget = '1.8'
        javaParameters = true
    }
}

shadowJar {
    mergeServiceFiles()
}

tasks.withType(JavaExec) {
    classpath += configurations.developmentOnly
    jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
}

您正在查看的文档与比您正在使用的更新的界面版本兼容。您似乎正在使用 https://github.com/micronaut-projects/micronaut-security/blob/78169cb6927d10dcc6ebc2f6ecb96efb26b9585b/security/src/main/java/io/micronaut/security/authentication/AuthenticationProvider.java#L39 which is why your code won't compile. 2.0RC1 looks like https://github.com/micronaut-projects/micronaut-security/blob/d5ecfc200cf27bd92ec7ce7b3760f5c264ec2647/security/src/main/java/io/micronaut/security/authentication/AuthenticationProvider.java#L44.

处的那个