springboot登陆拦截并返回json数据
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);
}
}
未登录时返回
评论区
请写下您的评论...
猜你喜欢
框架
4465
shiro解决ajax访问拦截返回json串在shiro自定义拦击的时候一般会继承AuthorizationFilter类重写isAccessAllowed()方法。该方法会根据我们自定义的规则通过
框架
4429
springboot请求json数据不返回对象的指定字段在实体类的字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
框架
2546
参数校验失败统一返回给前端异常信息参数校验如何使用参考:http://www.jiajiajia.club/blog/artical/yjw520/248校验需要的pom依赖
java项目
1394
springboot+mybatis配置多数据源并利用aop实现自动切换(demo)
框架
1932
springboot+mybatis配置多数据源并利用aop实现自动切换1.项目大致结构2.pom依赖dependencygroupIdorg.springframework.boot
前端(h5)
5151
layui管理端session过期正确的登陆姿势登陆页面跑到了iframe里边解决在登陆页面加入如下jsif(window!=top){top.location.href=location.href;};
blog
mysql截取字符串
数据库基础
2430
、substring(str,index)当index0从左边开始截取直到结束当index0从右边开始截取直到结束当index=0返回空4、substring(str,index,len)截取str,从in
框架
5511
解决mybatis返回Map当字段为空时没有属性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
2024-08
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
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。