使用JSON响应处理Spring安全性错误

时间:2013-08-11 11:09:48

标签: spring spring-mvc spring-security

我正在使用spring security 3.1和Spring 3.2进行REST服务。 我很难让每个回复都是JSON,例如如果用户尝试访问某些资源但尚未进行身份验证。 此外,如果用户提出错误请求,我想返回带有错误消息的JSON。

提一下,如果有一些全球性的地方,我应该更容易接受所有的错误/例外。

1 个答案:

答案 0 :(得分:3)

为什么不编写由所有其他控制器扩展的控制器类(或者在使用3.2时使用@ControllerAdvice)并在该类中包含exceptionhandler注释方法?这样的东西

@ExceptionHandler(Throwable.class)
public @ResponseBody GenericResponse handleException(Throwable throwable){
 //handle exception

 }

或阅读此博客post

<强>更新

很抱歉这个迟到的回复。这是我的建议。使其失败并返回403响应。为此,只需在Spring安全配置中添加以下代码段即可。

<beans:bean id="entryPoint"
    class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />

并将entrypoint-ref指向此bean

<http auto-config="true" use-expressions="true" entry-point-ref="entryPoint">

在客户端,在您的AJAX代码中,添加一个错误块

            error : function( jqXHR, textStatus, errorThrown ){
                if (jqXHR.status == 403){
                    alert('you need to login to do this operation');
                    window.location.href = contextPath+"/signin";
// or whatever you want to
                }
            }