token验证,如果验证失败,抛出自定义异常,返回结果固定格式

spring-mvc.xml

<!-- json转换器 -->
    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" id="jsonMessageConverter">
    </bean>

    <!-- 统一异常处理类,需要在web.xml中将默认的异常处理器关闭 -->
    <bean class="com.xxx.common.fitter.TokenExceptionResolver" id="handlerExceptionResolver">
        <!-- 注入一个json转换器 -->
        <property name="jsonMessageConverter" ref="jsonMessageConverter">
    </property></bean>

切面类

只是满足条件后,抛出异常

throw new TokenException("无权限");

TokenExceptionResolver类

 import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.common.bean.JsonResultBean;
import com.xxx.common.util.EifiniConstant;
import com.xxx.common.exception.TokenException;

 public class TokenExceptionResolver implements HandlerExceptionResolver{
    // json转换器
        // 将异常信息转json
        private HttpMessageConverter<JsonResultBean> jsonMessageConverter;

        public HttpMessageConverter<JsonResultBean> getJsonMessageConverter() {
            return jsonMessageConverter;
        }
        //依赖注入三种方式之一setter注入
        public void setJsonMessageConverter(
                HttpMessageConverter<JsonResultBean> jsonMessageConverter) {
            this.jsonMessageConverter = jsonMessageConverter;
        }

    @Override
    public ModelAndView resolveException(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex) {
        TokenException tokenException;
        if(ex instanceof TokenException){
            tokenException = (TokenException)ex;
            // 异常信息解析
            HttpOutputMessage outputMessage = new ServletServerHttpResponse(response);

            try {
                //将exceptionResultInfo对象转成json输出,这里使用spring异常处理的工具
                jsonMessageConverter.write(new JsonResultBean(EifiniConstant.ERROR,tokenException.getMessage()), MediaType.APPLICATION_JSON, outputMessage);
            } catch (HttpMessageNotWritableException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
//            tokenException = new TokenException("未知错误");
        }
        return new ModelAndView();
    }

 }

原文地址:https://www.cnblogs.com/jeanfear/p/9167564.html

时间: 2024-10-09 04:24:49

token验证,如果验证失败,抛出自定义异常,返回结果固定格式的相关文章

Dubbo抛出自定义异常

最近开始学习Dubbo框架,在工作中会把之前的业务迁移过来. 在原来的Spring MVC框架实现中,有使用到自定义异常的场景(自定义异常继承RuntimeException).而对于异常(包括自定义异常),在业务代码中都不做任何try-catch操作,而是由公用的Controller来处理异常. 在使用dubbo的过程中,在dubbo的service端定义有自定义异常进行throw的时候,却发现在customer的Controller中无法instanceof,自己自定义的异常类被转成了Run

Python强制抛出自定义异常

raise Exception("My Exception") 当程序运行到这行时,会抛出异常,打印出Exception: My Exception

黑马程序员——————&gt; 异常处理之抛出

------- android培训.java培训.期待与您交流! ---------- java的异常被分类为两大类,Checked异常和Runtime异常(运行时异常).所有的RuntimeException类及其子类的实例被称为Runtime异常:不是RuntimeException类及其子类的异常实例则被称为Checked异常. 对于Checked异常的处理方式有如下两种. 1:当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后在对应的catch块中修复

java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),

建立exception包,建立Bank类,类中有变量double  balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),表示存入银行100元,当用方法withdrawal(150),withdrawal(-15)时会抛出自定义异常. pa

基于Token的身份验证——JWT(转)

本文转自:http://www.cnblogs.com/zjutzz/p/5790180.html 感谢作者 初次了解JWT,很基础,高手勿喷.基于Token的身份验证用来替代传统的cookie+session身份验证方法中的session. JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为: A.B.C A由JWT头部信息header加密得到B由JWT用到的身份验证信息json数据加密得到C由A和B加密得到,是校验部分 怎样生成A? header格式为: { "typ

WebApi_基于Token的身份验证——JWT(z)

基于Token的身份验证——JWT JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为: A.B.C A由JWT头部信息header加密得到B由JWT用到的身份验证信息json数据加密得到C由A和B加密得到,是校验部分 怎样生成A? header格式为: { "typ": "JWT", "alg": "HS256" } 它就是一个json串,两个字段是必须的,不能多也不能少.alg字段指定了生成C的算法

基于 Token 的身份验证方法

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录.大概的流程是这样的: 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端

java中的异常抛出以及自定义异常

throw throws 声明将要抛出何种类型的异常(声明) public void 方法名(参数列表) throws 异常列表{ //调用会抛出异常的方法或者: throw new Exception(); } class 自定义异常类 extends异常类型{ }

验证视图状态 MAC 失败

起因: 最近在做一个项目需要用到生成多个Html页,采用一下方法动态生成. WebRequest request = WebRequest.Create(pageurl); WebResponse response = request.GetResponse(); Stream resstream = response.GetResponseStream(); StreamReader sr = new StreamReader(resstream, System.Text.Encoding.U