用户登录拦截器+SpringBoot+Vue资源跨域问题解决方法

 1.用户登录拦截器

package com.trs.wenxin.spreadstatis.intercepter;
/**
 * 用户登录拦截
 *
 * @Author quwei
 * @Date 2019/07/30
 */


import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Component
public class UserLoginInterceptor implements HandlerInterceptor {


    /*
     * 视图渲染之后的操作
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

        //System.out.println("执行了afterCompletion方法");
    }

    /*
     * 处理请求完成后视图渲染之前的处理操作
     * 通过ModelAndView参数改变显示的视图,或发往视图的方法
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        //System.out.println("执行了postHandle的方法");
    }

    /*
     * 进入controller层之前拦截请求
     * 返回值:表示是否将当前的请求拦截下来  false:拦截请求,请求别终止。true:请求不被拦截,继续执行
     * Object obj:表示被拦的请求的目标对象(controller中方法)
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        if (request.getSession().getAttribute("session_user") == null) {
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.sendRedirect("/spreadstatis/Login");
            return false;
        }
        return true;
    }


}

2. 放行可以访问的接口

 

package com.trs.wenxin.spreadstatis.intercepter;//package com.trs.spreadstatis.intercepter;
/**
 * 拦截器
 *
 * @Author quwei
 * @Date 2019/07/30
 */

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

import java.util.ArrayList;
import java.util.List;

@Configuration
public class SessionInterceptor implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        /**
         * 自定义拦截器,添加拦截路径和排除拦截路径
         * addPathPatterns():添加需要拦截的路径
         * excludePathPatterns():添加不需要拦截的路径
         * 在括号中还可以使用集合的形式,如注释部分代码所示
         */
        //registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/user/queryAllUser").excludePathPatterns("/user/userLogin");

        //举例:利用集合的形式
        List list = new ArrayList();
        list.add("/spreadstatis/Login");
        list.add("/spreadstatis/userLogin");
        list.add("/spreadstatis/checkCode");
        list.add("/spreadstatis/userRegister");
        list.add("/spreadstatis/registerpage");
        list.add("/spreadstatis/forgetPwd");


        registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/**").excludePathPatterns(list);
    }

}

3.返回给前端的数据

  //拦截没有登录的用户
    @CrossOrigin
    @ResponseBody
    @RequestMapping(value = {"/Login"})
    public BaseResponse loginHtml() {
        return BaseResponse.ok(401, "用户没有登录,请登录!");
    }

4.资源跨域问题

(1).在拦截器中设置:

 response.setHeader("Access-Control-Allow-Origin", "*");

(2).在controller中的接口上加入注解

@CrossOrigin

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值