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

更改未成功身份验证的响应状态

宋丰
2023-03-14

这样做的全部目的是,当用户被阻止时,前端会显示不同的错误消息,当找不到用户名和密码不正确时,前端会显示不同的消息。

public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

    @Override
    public void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response,
                                           AuthenticationException exception) throws IOException, ServletException {
        if (exception.getMessage().contains("404")) {
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
        } else if (exception.getMessage().contains("disabled")) {
            response.sendError(HttpServletResponse.SC_CONFLICT);
            response.setStatus(HttpServletResponse.SC_CONFLICT);
            response.setHeader("test", "test");
        }
        super.unsuccessfulAuthentication(request, response, exception);
    }
}

我正试图根据异常消息更改响应错误状态。

此类扩展了UsernamePasswordAuthenticationFilter并覆盖unsuccessfulAuthentication方法。每次身份验证失败时,都会调用unsuccessfulAuthentication方法。

即使响应状态设置为例如冲突,浏览器也会收到403个未经授权的错误。

我似乎无法以任何方式修改响应状态和消息/输出。

你会推荐什么样的解决方案来解决这个问题?

共有1个答案

穆飞星
2023-03-14

我想通了,我需要把“返回”关键字放在方法结束之前。

 类似资料:
  • 成员身份验证 PDF版下载 OAuth2简介 如流平台提供了OAuth的授权登录方式,可以使如流客户端(移动端或者桌面端内嵌打开)打开的网页获取成员的身份信息,从而免去登录环节。 企业应用中的URL链接(包括自定义菜单或者消息中的链接),均可通过OAuth2.0验证接口来获取成员的身份信息(UserId)。 第一步:构造网页授权链接 获取用户在如流客户端打开应用(或者链接)时的用户身份,如流提供两

  • 这是我使用的授权标头: 以下是我使用的基本字符串: 以下是我的推特文档: 步骤1:获取特殊请求令牌 首先,您使用应用程序的使用者密钥向Twitter请求令牌URLhttps://api.twitter.com/oauth/request_token发出HTTPS请求。除了传统的oauth_*签名参数之外,您还必须包含设置为reverse_auth值的x_auth_mode。 例如,考虑使用令牌秘密

  • 我的网站安全配置如下; 当我给出错误的用户名时,身份验证会按预期失败。但是,如果我一次验证成功,之后所有密码错误但用户名正确的请求都会成功验证。。。。 它被缓存在什么地方了吗? 我可以禁用此功能吗? 难道它不应该给出错误密码的身份验证失败吗? 注意:我正在学习Spring安全。我没有任何HTML页面在这个应用程序和测试从邮递员。

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无

  • 在我的Laravel应用程序中,我有不同的管理员和用户身份验证。所以我也有单独的观点。我已经把auth文件夹放在文件夹中,这样我的admin auth的视图路径现在是。在哪里可以更改这些路径,以便可以将它们用于所有身份验证函数?

  • 默认情况下,Spring Boot使用从客户端默认接受值为“/login”的。 如果我想创建一个自定义身份验证系统,包括以下选项: 登录endpoint,如:/api/v1/auth/ign,将接受电子邮件和密码 而不是像YT中的许多视频所示那样创建CustomAuthFilter,而是在auth控制器中创建一个处理发送回jwt令牌的方法。 现在我已经知道,要更改默认登录路由,我需要: 但是下一部