【问题标题】:Prevent AuthenticationCredentialsNotFoundException while unit-testing在单元测试时防止 AuthenticationCredentialsNotFoundException
【发布时间】:2014-02-24 19:49:24
【问题描述】:

如何防止 Spring Security 在我的单元测试中抛出 AuthenticationCredentialsNotFoundException?我不希望用户通过身份验证或匿名身份验证。

我试着这样做:

    SecurityContext ctx = SecurityContextHolder.createEmptyContext();
    SecurityContextHolder.setContext(ctx);
//  ctx.setAuthentication();

但我不知道从哪里获取匿名身份验证对象。

【问题讨论】:

    标签: spring unit-testing spring-security


    【解决方案1】:

    您的代码示例非常不具体。我假设您使用的基本配置取自 Spring Security getting started page

    要匿名验证用户,您需要将匿名用户放入安全上下文中:

    SecurityContext ctx = SecurityContextHolder.createEmptyContext();
    SecurityContextHolder.setContext(ctx);
    ctx.setAuthentication(new UsernamePasswordAuthenticationToken("anonymous", "", Arrays.asList(new SimpleGrantedAuthority("ROLE_ANONYMOUS"))));
    

    否则,您应该从相关网址中删除所有安全映射或注释。见:

    How do I get permitAll in Spring Security to NOT throw AuthenticationCredentialsNotFoundException in @Controller object?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 2016-09-23
      相关资源
      最近更新 更多