springboot登陆拦截并返回json数据

硅谷探秘者 6700 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


评论区
请写下您的评论...
暂无评论...
猜你喜欢
框架 4153 shiro解决ajax访问json串在shiro自定义击的时候一般会继承AuthorizationFilter类重写isAccessAllowed()方法。该方法会根我们自定义的规则通过
框架 3922 springboot请求json对象的指定字段在实体类的字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
框架 2268 校验失败统一给前端异常信息参校验如何使用参考:http://www.jiajiajia.club/blog/artical/yjw520/248校验需要的pom依赖
java项目 1394 springboot+mybatis配置多利用aop实现自动切换(demo)
框架 1663 springboot+mybatis配置多利用aop实现自动切换1.项目大致结构2.pom依赖dependencygroupIdorg.springframework.boot
前端(h5) 4912 layui管理端session过期正确的姿势页面跑到了iframe里边解决在页面加入如下jsif(window!=top){top.location.href=location.href;};
数据库基础 1749 、substring(str,index)当index0从左边开始取直到结束当index0从右边开始取直到结束当index=0空4、substring(str,index,len)取str,从in
框架 4902 解决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 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。