springboot登陆拦截并返回json数据

硅谷探秘者 2507 0 0


1.登陆拦截器

package com.dzqc.yx.interceptor;

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

import com.alibaba.fastjson.JSONObject;
import com.dzqc.yx.util.AjaxResult;

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

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
    /**
     * 登录拦截器
     * @author Boost
     */
public class LoginInterceptor implements HandlerInterceptor {
        /**
         * 开始进入地址请求拦截
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            HttpSession session = request.getSession();
            if(session.getAttribute("user") != null){
                return true;
            }else{
            	String jsonObjectStr = JSONObject.toJSONString(new AjaxResult(1186,false,"login_error",null));
                returnJson(response,jsonObjectStr);
                return false;
            }
        }
        
        /**
         * 认证失败返回json数据
         * @param response
         * @param json
         * @throws Exception
         */
        @SuppressWarnings("unused")
		private void returnJson(HttpServletResponse response, String json) throws Exception{
            PrintWriter writer = null;
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html; charset=utf-8");
            try {
                writer = response.getWriter();
                writer.print(json);
     
            } catch (IOException e) {
            } finally {
                if (writer != null)
                    writer.close();
            }
        }
        
        /**
         * 处理请求完成后视图渲染之前的处理操作
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                               ModelAndView modelAndView) throws Exception {
        }

        /**
         * 视图渲染之后的操作
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
        }
        /**
         * 定义排除拦截URL
         * @return
         */
        public static List<String> getUrl(){
        	List<String> url = new ArrayList<String>();
            url.add("/tologin");    //登录页
            url.add("/login/in");   //登录action URL
            return url;
        }
    }


在preHandle方法的else语句块中也可以进行从定向到登陆页面,例

response.sendRedirect("/admin/login");	//未登录,跳转到登录页



2.启用拦截器

package com.dzqc.yx.interceptor;

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

/***
 * 注册拦截器
 */
@Configuration
public class WebappAdapter implements WebMvcConfigurer {
    /**
     * 注册拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(LoginInterceptor.getUrl());
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}



未登录时返回


image.png

猜你喜欢
框架 2484 shiro解决ajax访问json串在shiro自定义击的时候一般会继承AuthorizationFilter类重写isAccessAllowed()方法。该方法会根我们自定义的规则通过
框架 1577 springboot请求json对象的指定字段在实体类的字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
框架 617 校验失败统一给前端异常信息参校验如何使用参考:http://www.jiajiajia.club/blog/artical/yjw520/248校验需要的pom依赖
java项目 519 springboot+mybatis配置多利用aop实现自动切换(demo)
框架 560 springboot+mybatis配置多利用aop实现自动切换1.项目大致结构2.pom依赖dependencygroupIdorg.springframework.boot
前端(h5) 3452 layui管理端session过期正确的姿势页面跑到了iframe里边解决在页面加入如下jsif(window!=top){top.location.href=location.href;};
数据库基础 841 、substring(str,index)当index0从左边开始取直到结束当index0从右边开始取直到结束当index=0空4、substring(str,index,len)取str,从in
框架 3778 解决mybatisMap当字段为空时没有属性1.修改mybatis配置文件mybatis:configuration:call-setters-on-nulls:true2.库中:3.没有修
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo
目录