【发布时间】:2020-10-03 18:46:51
【问题描述】:
我卡在 micronaut 应用程序的用户身份验证中 验证函数不接受 httpRequest 参数
我遇到了一个错误
类 'AuthenticationProviderUserPassword' 不是抽象的,也没有实现抽象成员 public abstract fun authenticate(authenticationRequest: AuthenticationRequest!): Publisher!在 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')
}
【问题讨论】:
-
您不需要只接受
AuthenticationRequest的authenticate方法吗? -
@JeffScottBrown 我正在关注此链接guides.micronaut.io/micronaut-security-session/guide/index.html
标签: authentication kotlin micronaut