【问题标题】:Type arguments should be specified for an outer class应该为外部类指定类型参数
【发布时间】:2021-09-11 10:02:01
【问题描述】:

我正在通过创建一个应用程序在我的应用程序中实现 oauth2 安全性 配置类,但我不知道我在哪里犯了错误,我得到了关注 编译时错误的类型

Type arguments should be specified for an outer class 'ExpressionUrlAuthorizationConfigurer'. Use full class name to specify them

SecurityConfig.kt

package com.main.serviceproduct.config

import org.springframework.context.annotation.Configuration
import org.springframework.security.config.Customizer
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry
import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer

@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
    @Throws(Exception::class)
    override fun configure(security: HttpSecurity){
        security.authorizeRequests(Customizer { authorize: ExpressionInterceptUrlRegistry ->
            authorize.anyRequest().authenticated()
        })
            .oauth2ResourceServer{obj: OAuth2ResourceServerConfigurer<HttpSecurity?>->obj.jwt()}
    }

}

security.authorizeRequests(Customizer { authorize: ExpressionInterceptUrlRegistry ->
            authorize.anyRequest().authenticated()

此时我在上面的行上收到错误授权: ExpressionInterceptUrlRegistry

【问题讨论】:

    标签: spring-boot kotlin spring-security spring-security-oauth2


    【解决方案1】:

    因为ExpressionInterceptUrlRegistry是一个内部(非静态)类,所以它需要外部类ExpressionUrlAuthorizationConfigurer&lt;T&gt;的类型信息,实际上是一个HttpSecurity

    以下应该有效:

    @Configuration
    @EnableWebSecurity
    open class SecurityConfig : WebSecurityConfigurerAdapter() {
        @Throws(Exception::class)
        override fun configure(security: HttpSecurity){
            security.authorizeRequests(Customizer { authorize: ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry ->
                authorize.anyRequest().authenticated()
            })
                .oauth2ResourceServer{obj: OAuth2ResourceServerConfigurer<HttpSecurity?> ->obj.jwt()}
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-02
      • 1970-01-01
      • 2020-12-30
      • 2013-07-28
      • 2017-11-21
      • 2019-07-21
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      相关资源
      最近更新 更多