我试图通过定义从WebSecurityConfigureAdapter扩展而来的配置类,为我的自定义安全配置(LDAP JWT)创建自己的spring启动程序。但是,当我使用此初学者启动应用程序时,我会得到:
IllegalStateException: Found WebSecurityConfigurerAdapter as well as SecurityFilterChain.
Please select just one.
我发现由于Spring Security性的这个问题,不再可能这样做了。Spring的WebSecurityConfiguration中有一个断言:
我解决了这个问题,在启动器中添加了以下内容(根据问题):
@Bean
@Order(1) //Explanation for this below
open fun filterChain(http: HttpSecurity, jwtHelper: JwtHelper): SecurityFilterChain {
return http.authorizeRequests()
...
.addFilterBefore(JwtAuthenticationFilter(jwtHelper), UsernamePasswordAuthenticationFilter::class.java)
.and().build()
}
@Bean
open fun authenticationProvider(ldapConfig: LdapConfig): ActiveDirectoryLdapAuthenticationProvider {
return ActiveDirectoryLdapAuthenticationProvider(...)
}
我添加了@order(1)
,因为有两个securityFilterChains
:mine(在上面的配置中定义)和另一个来自未知来源的。我想,后者是无法使用WebSecurityConfigrerAdapter
的原因。
我假设,正因为如此,我也不能使用@EnableGlobalMethod odSecurity(prePostEnable=true)
。它说:
Cannot apply org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration$EnableGlobalAuthenticationAutowiredConfigurer
to already built object
这是我的依赖列表:
dependencies {
compileOnly 'org.springframework.security:spring-security-core'
compileOnly 'org.springframework:spring-web'
compileOnly 'javax.servlet:javax.servlet-api'
api 'jakarta.xml.bind:jakarta.xml.bind-api'
api 'org.glassfish.jaxb:jaxb-runtime'
api 'io.jsonwebtoken:jjwt'
}
dependencies {
compile project(':my-ldap-security-model')
compileOnly 'javax.servlet:javax.servlet-api'
api 'org.springframework.security:spring-security-core'
api 'org.springframework.security:spring-security-config'
api 'org.springframework.security:spring-security-web'
api 'org.springframework:spring-web'
api 'org.springframework.security:spring-security-ldap'
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('com.demo.boot:my-ldap-security-spring-boot-starter:0.0.1')
}
看看项目结构,可能有一个来自xml配置的securityFilterChain,而不是类扩展。带有http标记的XML。
对于googlers
你不能用
@Bean
public SecurityFilterChain filterChain(HttpSecurity http)...
扩展WebSecurity配置适配器时。
选择以上一项或仅覆盖
@Override
protected void configure(HttpSecurity http)
最初,如果存在任何Web安全配置适配器(WebSecurityConfigureAdapter),则会禁用默认的安全过滤器链(SecurityFilterChain)。但是,如果spring security自动配置的优先级高于您的WebSecurity配置适配器的自动配置,那么它就不起作用。
解决方案:我在自动配置类上方添加了自动配置顺序(Ordered.HIGHEST\u priority 10)。不再有默认的安全筛选器链:)
关于EnableGlobalMethodSecurity。。。这是关于缓存的。突然,它被修好了。
我目前想实现这样的东西: 但是在中,我们将重点关注authProvider()方法和configure() 随着最近的消息,已被弃用。经过研究,我发现了一件事: 所以我也不得不这么做 这解决了另一个问题。但现在,我发现了这个错误。 这也是我的用户服务 你们介意帮我解决这个问题!谢谢:) 我还想提一下,我还没有在网上找到答案
我的代码中有多个WebSecurity配置适配器: 当我从ajax请求访问我的站点时,我得到:从源http://localhost:8082访问http://localhost:8080/user/authenticate的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过权限改造检查:请求的资源上不存在访问控制允许源标头。 我想我的WebSecurity配置适配器中有一些
我使用的Spring安全与oAuth2,但我有一个问题,我没有找到任何答案,在许多项目的例子,你有2次配置(HttpSecurity超文本传输协议)。 例如在https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframe
我有一个ListView和一个自定义适配器。问题是我看不到listview和数据,只看到一个白色页面。 在片段中我有: 在CustomAdapter中,我有: 我错在哪里? 更新: 谢谢,如果我想在ImageButton上设置onClickListener,我该怎么做?。。我尝试: 但问题是,当我单击例如第一个项目viewHolder时。mNomeView。getText()。toString()
本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑
英文原文:http://emberjs.com/guides/models/customizing-adapters/ 在Ember Data中,处理与后台数据仓库通信的逻辑是通过Adapter来完成的。Ember Data适配器内置了一些关于REST API的假定。如果后台的实现与Ember Data假定的惯例不同,那么通过扩展缺省的适配器可能很容易的实现。 有时因为一些原因需要自定义适配器,例