spring boot 中使用spring mvc interceptor(拦截器)判断操作权限
spring boot 中使用spring mvc interceptor(拦截器)判断操作权限
whitelover 发表于2年前
spring boot 中使用spring mvc interceptor(拦截器)判断操作权限
  • 发表于 2年前
  • 阅读 2173
  • 收藏 2
  • 点赞 1
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: spring boot 中使用spring interceptor(拦截器); 注意一点:尽量使用Filter 过滤器,因为拦截器依赖spring mvc ,而过滤器Filter 不依赖;

1.第一步:添加拦截器

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class TestInterceptor extends WebMvcConfigurerAdapter {

    /**
     * 添加拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TestHandlerInterceptor())
                //添加需要验证登录用户操作权限的请求
                .addPathPatterns("/testContrl/create*", "/testContrl/update*", "/testContrl/delete*")
                //排除不需要验证登录用户操作权限的请求
                .excludePathPatterns("/userCtrl/*");
    }
}

2.第二步: 拦截器实现

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpStatus;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

/**
 * 拦截器实现
 */
public class TestHandlerInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        int type = (Integer) request.getSession().getAttribute("userType");
        if (type == 1) {
            return true;
        } else {
            String result = ResultUtils.getErrorResult("当前登录用户无操作权限!");
            response.getOutputStream().write(result.getBytes());
            response.setStatus(HttpStatus.OK.value());
            return false;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
            throws Exception {
        // TODO Auto-generated method stub
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub
    }

}

3.第三步:测试控制器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(value = "/testContrl")
public class CommonController {

    @Autowired
    private TestService testService;
    /**
     * @return
     */
    @RequestMapping(value = "/createObj")
    @ResponseBody
    public String createObj() {
        // do something .......
        return "success";
    }
}


共有 人打赏支持
粉丝 13
博文 26
码字总数 10236
×
whitelover
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: