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

Spring Security:在身份验证错误时返回formLogin

连俊智
2023-03-14

如果我提供了正确的凭据,它将响应正常的答案。
如果我没有提供凭据,它将响应401未经授权-完美!
如果我提供了错误的凭据,它将响应302找到,位置为/login

最后一部分是我不想要的--我也想要一个401未经授权的错误凭据。

HTTP http://localhost:8081/rest/
http/1.1 401www-authenticate:Basic realm=“我的领域”





http-a正确:密码http://localhost:8081/rest/some/api/
http/1.1200在www.authenticate:Basic realm=“My Realm”

@Configuration
@Order(1)
public static class RestSecurityConfig extends WebSecurityConfigurerAdapter {
  @Autowired
  private AuthorizationProperties properties;

  @Override protected void configure(HttpSecurity http) throws Exception {
    // @formatter:off
    http.antMatcher("/rest/**")
      .authorizeRequests()
        .anyRequest().hasRole("API").and()
      .httpBasic()
        .realmName(properties.getRealm()).and()
      .formLogin().disable()
      .csrf().disable();
    // @formatter:on
  }
}

@Configuration
@Order(2)
public static class FrontendSecurityConfig extends WebSecurityConfigurerAdapter {
  @Override public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/app/**", "/webjars/**", "/static/**", "/js/**");
  }

  @Override protected void configure(HttpSecurity http) throws Exception {
    // @formatter:off
    http
      .authorizeRequests()
        .anyRequest().hasAnyRole("USER").and()
      .formLogin();
    // @formatter:on
  }
}

共有1个答案

鞠修雅
2023-03-14

我能给这件事带来一些曙光。

在基本auth请求失败后重定向到表单登录是由于dispatcher servlet在验证凭据失败后试图重定向到URL/error造成的。

要获得适当的错误响应,需要将/error添加到web安全配置中忽略的antmatchers中。

 类似资料:
  • 问题内容: 以下是我从GoLang获得的MongoDB连接拨号。但是它返回一个紧急消息“ SASL身份验证步骤服务器返回错误:身份验证失败。 ”。我的用户名,密码,hostAddrs和dbName是正确的。我在这里想念什么? 问题答案: 我遇到类似的错误并添加了参数,并且在我们连接到远程MongoDB时可以正常工作 在您的代码中使用以下类似格式:

  • 问题内容: 我正在尝试为403(访问被拒绝)和500(内部服务器错误)之类的错误编写一个自定义错误页面。它们将从Velocity模板呈现,并使用用户的语言环境翻译所有消息。身份验证和区域设置解析在应用程序中运行良好。 我将web.xml中的位置设置为所需的页面,并在webmvc-context.xml中通过添加了Requet-to-view控制器。 我遇到的问题是 SecurityContextH

  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • cluster=hfactory.getOrCreateCluster(“test cluster”,“localhost:9160”,凭据); 但不幸的是,它给了我一个错误: HFactory类型中的方法getOrCreateCluster(String,CassandraHostConfigurator,Map)不适用于参数(String,String,Map)

  • 问题内容: 我刚刚开始使用docker。我正在按照此处指定的说明进行操作https://docs.docker.com/windows/step_one/ 我在Windows 10和ran上安装了docker(1.10.2)。但是,当本教程未提及任何内容时,出现了身份验证错误。 这是我收到的消息。 我在google&这里搜索,但找不到与此错误消息相似的内容。 谢谢! 问题答案: 当您运行任何其他d

  • 我正在使用Smack4.1原生库为android开发一个聊天应用程序。我可以在应用程序和服务器之间设置连接,但在登录时,我得到了关于SASL身份验证的SmackException。 null null 这是我的logcat输出。 事先谢谢你的帮助。欢呼:)

  • 我想在CDH-5.3.2版本中使用水槽从twitter获取数据。我已经配置了flume.conf、hbase接收器和twitter源代码。 但是,当我启动代理时,我收到以下错误: flume.conf和hbase接收器代码与此博客相同:http://ahikmat.blogspot.com/2014/08/streaming-twitter-tweets-to-hbase-with.html 而且

  • 在controller文件夹中,我有一个名为fbauth.php的控制器,其中有以下代码 但当我点击facebook链接并尝试连接时,我得到了如下错误 另外,为了进行双重检查,我在Kohana之外创建了这个函数,它没有问题。 我所做的是,在Kohana的外部,我创建了一个名为index.php的文件,在其中我输入了html和Facebook身份验证的标记,然后我创建了一个名为testauth.ph