Restangular 拦截器

本文详细介绍了如何在Spring框架中实现自定义的响应头拦截器,包括后台部分的实现细节以及app部分的运行配置。通过使用@SetCORNResponseHeader注解和自定义拦截器类,可以在请求响应前设置特定的CORS响应头,以适应跨域访问的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、后台部分:

package com.bio.framework.util.spring;

import java.lang.reflect.Method;

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

import org.springframework.aop.MethodBeforeAdvice;

import com.bio.base.annotation.SetCORNResponseHeader;
import com.bio.base.util.domain.ObjectUtils;
import com.bio.framework.dto.LpsMemberDto;

/**
 * @author jianana
 * 
 */
public class ResponseHeaderAdvice implements MethodBeforeAdvice {

	@Override
	public void before(Method method, Object[] args, Object target) throws Throwable {
		SetCORNResponseHeader setCORNResponseHeader = method.getAnnotation(SetCORNResponseHeader.class);
		if ((setCORNResponseHeader != null && !setCORNResponseHeader.isNeeded()) || ObjectUtils.isEmpty(setCORNResponseHeader)) {
			return;
		}
		String usernm = null;
		LpsMemberDto currentMemberInfo = null;
		for (Object arg : args) {
			if (arg instanceof HttpServletRequest) {
				usernm = ((HttpServletRequest) arg).getHeader("usernm");
				currentMemberInfo = (LpsMemberDto)((HttpServletRequest) arg).getSession().getAttribute("currentMemberInfo");
			}
		}
		for (Object arg : args) {
			if (arg instanceof HttpServletResponse) {
				if(ObjectUtils.isEmpty(usernm) || !currentMemberInfo.getUsernm().equals(usernm)){
					((HttpServletResponse) arg).setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
				}
				return;
			}
		}
	}
	
}
controller中需要拦截的方法@SetCORNResponseHeader(isNeeded=true)

2、app部分run中配置:

      Restangular.addFullRequestInterceptor(function (element, operation, route, url, headers, params, httpConfig) {
        return {
          headers: {usernm: "21312313213"}
        };
      });
      Restangular.setErrorInterceptor(function(res) {
        $state.go("login");
        return false;
      });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值