当前位置: 首页 > 知识库问答 >
问题:

MockMvc和Spring Security性-空FilterChainProxy

田化
2023-03-14

http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockMVC

测试:

@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class LikesTest {

    protected MockMvc mockMvc;

    @Autowired
    private WebApplicationContext context;

    @Before
    public void setup() {
        mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
                //.standaloneSetup(new MessageController())
                .apply(SecurityMockMvcConfigurers.springSecurity())
                .build();
    }

    @Test
    @WithMockUser("user")
    public void testAddLike() throws Exception {
        mockMvc.perform(get("/like?msgId=4&like=false"));
    }
}

当我运行JUnit测试时,我会得到以下失败跟踪

<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy"/>

共有1个答案

薛保臣
2023-03-14

在您的例子中,当使用.WebAppContextSetup时,您可能忘记扩展AbstractSecurityWebApplicationInitializer以初始化安全筛选器。

对于独立设置,需要将她的安全配置添加到@ContextConfiguration并autowire这个bean:

 @Autowired
 FilterChainProxy springSecurityFilterChain;

然后像这样准备MockMvc:

MockMvc mockMvc = MockMvcBuilders
   .standaloneSetup(controller)
   .apply(SecurityMockMvcConfigurers.springSecurity(springSecurityFilterChain))
   .build();
 类似资料:
  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我想进行联调。我目前的方法: 我放置了@AutoConfigreMockMvc,但MockMvc对象仍然为空

  • 我在这里有很多问题要解决。一直试图将上述3项技术集成到我们的WebApp中…我们要使用 null web.xml: 我的servlet-context.xml: My manager-context.xml: 编辑2 我认为主要的问题是SpringSecurity需要webapp上下文(ContextLoaderListener)才能工作,但web应用程序是在servlet上下文中运行的。控制器方

  • 这里有一个非常基本的spring boot项目,只有6个类。 https://github.com/paranoiabla/spring-boot-mockmvc 设置非常基本,只有一个测试用例失败了。我得到的例外是 我相信这是因为line,方法通过调用仅接受路径的构造函数创建了。作为内部的结果,使用初始化,它将在类路径中查找资源。这样,如果我有一个并且我的属性文件在中,它将永远找不到它们,因为被

  • 我正在学习springsecurity(基于java的配置),我无法使注销正常工作。当我点击注销时,我看到URL更改为http://localhost:8080/logout并获取“HTTP 404-/logout”。登录功能工作正常(即使使用自定义登录表单),但问题是注销,我怀疑重定向的url“localhost:8080/logout”应该类似于“localhost:8808/springte

  • 主要内容:1.入门,2.设置用户名和密码1.入门 1.启动一个SpringBoot项目 2.导入SpringSecurity相关依赖 3.编写Controller TestController.java 用户是user 密码是刚刚的 2.设置用户名和密码 1.在配置文件中设置 2.在配置类中设置 3.自定义实现类 2.1 配置文件中设置 2.2 在配置类中设置 设置用户名为zZZ,密码为root 2.3 自定义实现类 配置类: 业务类: