如何从自定义身份验证提供程序类更改 Json 格式的 BadCredentialsException、UserNameNotFound 异常消息

Posted

技术标签:

【中文标题】如何从自定义身份验证提供程序类更改 Json 格式的 BadCredentialsException、UserNameNotFound 异常消息【英文标题】:How to change the BadCredentialsException,UserNameNotFound Exception Messages in Json format from custom Authentication Provider class 【发布时间】:2016-11-01 18:23:22 【问题描述】:

我尝试了不同的方法,但到目前为止对我来说没有任何效果,并且仍然无法以 json 格式从我的自定义身份验证提供程序发送异常响应。我正在使用 xml 配置

我尝试过的事情

1.customAuthenticationFailureHandler

2 自定义入口点

3.CustomAccessDenied

我在前端有 angular js,如果身份验证失败,我想要一条 json 消息,但现在我抛出 BadCredentialsException,UsernotFoundException 并在 rest 客户端中获取 html 数据。

任何帮助...

【问题讨论】:

【参考方案1】:

好的,所以我得到了我的问题的答案......

您必须编写实现 AuthenticationEntryPoint 接口的 customAuthenticationEntryPoint 类

在你的 securtiy-config.xml 文件中

你必须添加 entry-point-ref="restAuthenticationEntryPoint"

    <http auto-config='true' use-expressions="true"
       entry-point-ref="restAuthenticationEntryPoint">
       <http-basic entry-point-ref="restAuthenticationEntryPoint"/>
       <intercept-url pattern="/user" access="hasRole('ROLE_USER')" />
       <access-denied-handler ref="securityAccessDeniedHandler" />
       <form-login authentication-success-handler-ref="mySuccessHandler"
       authentication-failure-handler-ref="authenticationFailureHandler" /></http>

那么这里要注意的重点是你必须在 httphttp-basic 标签中提供 entry-point-ref .

【讨论】:

以上是关于如何从自定义身份验证提供程序类更改 Json 格式的 BadCredentialsException、UserNameNotFound 异常消息的主要内容,如果未能解决你的问题,请参考以下文章

keycloak 从自定义协议映射器抛出身份验证错误

Laravel,如何从自定义表的 jwt 令牌获取登录用户

从自定义类管理 NSURLSession 的完成处理程序

如何使用 firebase_auth 和 provider 检测身份验证更改

身份验证用户提供程序 [passport] 未使用 laravel 护照定义

Rails:从自定义验证器调用标准验证