Java 浏览器错误:此XML文件似乎没有任何与之关联的样式信息
我正在使用OAuth2授权服务器和资源服务器。对于web配置,我正在扩展Java 浏览器错误:此XML文件似乎没有任何与之关联的样式信息,java,spring-boot,spring-mvc,oauth-2.0,web-config,Java,Spring Boot,Spring Mvc,Oauth 2.0,Web Config,我正在使用OAuth2授权服务器和资源服务器。对于web配置,我正在扩展webmvc配置支持类,并在我的WebConfig类上使用@EnableWebMvc注释。代码运行正常,但每当我尝试点击URL时,浏览器上就会出现这样一条错误消息:此XML文件似乎没有任何与之相关的样式信息。文档树如下图所示。 访问此资源需要完全身份验证 未经授权 这是我的班级: package com.ab.security.config; 导入org.springframework.context.annotatio
webmvc配置支持
类,并在我的WebConfig
类上使用@EnableWebMvc
注释。代码运行正常,但每当我尝试点击URL时,浏览器上就会出现这样一条错误消息:此XML文件似乎没有任何与之相关的样式信息。文档树如下图所示。
访问此资源需要完全身份验证
未经授权
这是我的班级:
package com.ab.security.config;
导入org.springframework.context.annotation.Bean;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.context.support.propertysourcesplaceplaceconfigurer;
导入org.springframework.web.context.request.RequestContextListener;
导入org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
导入org.springframework.web.servlet.config.annotation.EnableWebMvc;
导入org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
导入org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
导入org.springframework.web.servlet.config.annotation.WebMVC配置支持;
@配置
公共类WebConfig扩展了WebMvcConfigurationSupport{
@凌驾
public void addViewController(ViewControllerRegistry注册表){
super.addViewController(注册表);
registry.addViewController(“/”).setViewName(“转发:/index”);
registry.addViewController(“/index”);
registry.addViewController(“/secure”);
}
@豆子
public RequestContextListener RequestContextListener(){
返回新的RequestContextListener();
}
}
这是我的OauthConfig.java文件:
package com.ab.security.config;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableOAuth2Sso
@Configuration
public class OauthConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests().antMatchers("/", "/login**").permitAll().anyRequest()
.authenticated();
}
}
package com.ab.security.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
@EnableResourceServer
@Configuration
public class ResourceServerConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatchers().antMatchers("/login", "/oauth/authorize").and().authorizeRequests().anyRequest()
.authenticated().and().formLogin().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.parentAuthenticationManager(authenticationManagerBean()).inMemoryAuthentication().withUser("Peter")
.password("peter").roles("USER");
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
下面是AuthorizationServerConfig.java:
package com.ab.security.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
@EnableAuthorizationServer
@Configuration
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
@Qualifier("authenticationManagerBean")
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory().withClient("ClientId").secret("secret").authorizedGrantTypes("authorization_code")
.scopes("user_info").autoApprove(true);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
}
以下是ResourceServerConfig.java文件:
package com.ab.security.config;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableOAuth2Sso
@Configuration
public class OauthConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests().antMatchers("/", "/login**").permitAll().anyRequest()
.authenticated();
}
}
package com.ab.security.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
@EnableResourceServer
@Configuration
public class ResourceServerConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatchers().antMatchers("/login", "/oauth/authorize").and().authorizeRequests().anyRequest()
.authenticated().and().formLogin().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.parentAuthenticationManager(authenticationManagerBean()).inMemoryAuthentication().withUser("Peter")
.password("peter").roles("USER");
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
您正在使用Spring Boot,那么为什么要使用此配置?删除
@EnableWebMvc
删除所有被覆盖的方法,但删除addViewControllers
(其余的都已经由Spring Boot完成)。如果这还不能解决问题,那么错误就在您的安全设置中,而不是在您的web设置中。@M.Deinum,我已经按照您的建议做了,但现在我得到了一个错误:创建名为“scopedTarget.OAuth2Client Context”的bean时出错:作用域“会话”对于当前线程不是活动的;然后重新添加RequestContextListener
bean。@M.Deinum如果我重新添加RequestContextListener
,那么主要问题仍然存在,我已经发布了这个问题。我正在关注这个问题,但刚刚将启动版本更新为2.3.3版本