yb课堂之用户登陆校验拦截器开发 《十一》
开发对应的登陆拦截器
开发loginInterceptor
- 登陆校验成功放行
- 登陆不成功返回json数据
LoginInterceptor.java
package net.ybclass.online_ybclass.interceptor; import com.fasterxml.jackson.databind.ObjectMapper;
import io.jsonwebtoken.Claims;
import net.ybclass.online_ybclass.utils.JWTUtils;
import net.ybclass.online_ybclass.utils.JsonData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter; public class LoginInterceptor implements HandlerInterceptor {
/**
* 进入到Controller之前的方法
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try {
String accesToken = request.getHeader("token");
if (accesToken == null) {
accesToken = request.getParameter("token");
}
if (StringUtils.isNoneBlank(accesToken)) {
Claims claims = JWTUtils.checkJWT(accesToken);
if (claims == null) {
sendJsonMessage(response, JsonData.buildError("登陆过期,请重新登陆"));
//告诉登陆过期,重新登陆
return false;
}
Integer id = (Integer) claims.get("id");
String name = (String) claims.get("name");
request.setAttribute("user_id", id);
request.setAttribute("name", name);
return true;
}
} catch (Exception e) {
}
//登陆失败
sendJsonMessage(response, JsonData.buildError("登陆过期,请重新登陆"));
return false;
} /**
* 响应json数据给前端
* @param response
* @param obj
*/
public static void sendJsonMessage(HttpServletResponse response, Object obj) {
try {
ObjectMapper objectMapper=new ObjectMapper();
response.setContentType("application/json;charset=utf-8");
PrintWriter writer=response.getWriter();
writer.print(objectMapper.writeValueAsString(obj));
writer.close();
writer.flush();
} catch (Exception e) {
e.printStackTrace();
}
} @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 { }
}
yb课堂之用户登陆校验拦截器开发 《十一》的更多相关文章
- JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册 显示错误信息到页面上的另一种方法: public ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战
笔记 10.Springboot2.x用户登录拦截器开发实战 简介:实战开发用户登录拦截器拦截器 LoginInterceptor 1.实现接口 LoginI ...
- IOS开发之记录用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreDa ...
- 用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久 化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreD ...
- Struts 2 类型转换器 输入校验 拦截器
Struts 2中内建了字符串类型和常见类型之间相互转换的转换器,能满足大多数转换需求,但不能完成字符串和User对象之间的转换. OGNL项目中有一个TypeConvert接口,这个接口是自定义类型 ...
- Spring Boot实现一个监听用户请求的拦截器
项目中需要监听用户具体的请求操作,便通过一个拦截器来监听,并继续相应的日志记录 项目构建与Spring Boot,Spring Boot实现一个拦截器很容易. Spring Boot的核心启动类继承W ...
- 案例47-crm练习登录校验拦截器
1 LoginInterceptor package www.test.web.interceptor; import java.util.Map; import com.opensymphony.x ...
- taotao用户登录springMVC拦截器的实现
在springMVC中写拦截器,只需要两步: 一.写 java 拦截器类,实现 interceptor 拦截器接口. 二.在 springMVC 的xml配置文件中,配置我们创建的拦截器对象及其拦截目 ...
- 防止未登录用户操作—struts2拦截器简单实现(转)
原文地址:http://blog.csdn.net/zhutulang/article/details/38351629 尊重原创,请访问原地址 一般,我们的web应用都是只有在用户登录之后才允许操作 ...
- 「Vue」登陆-路由拦截器
1.main.js设置拦截器 router.beforeEach(function (to,from,next) { if (to.meta.requireAuth) { if (store.stat ...
随机推荐
- 聊聊MySQL是如何处理排序的
本文分享自华为云社区<MySQL怎样处理排序️如何优化需要排序的查询?>,作者:菜菜的后端私房菜. 前言 在MySQL的查询中常常会用到 order by 和 group by 这两个关键 ...
- rsync备份服务器部署详情
rsync -avz --bwlimit=1024M /data/wanxhe rsync_backup@10.x.x.38::backup/gpu007/data/ --password-fil ...
- BigDecimal类的基本使用
概述 java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的 ...
- django验证码插件 --- django-simple-captcha
使用django-simple-captcha实现登录验证码: 第一步:安装pillow依赖 pip install pillow -i https://pypi.tuna.tsinghua.edu ...
- 『手撕Vue-CLI』函数柯里化优化代码
开篇 在上一篇文章中,给 nue-cli 添加了拉取版本号的功能,这一次来优化一下代码,使用函数柯里化的方式来优化代码. 实现 函数柯里化 函数柯里化是一种将使用多个参数的一个函数转换成一系列使用一个 ...
- 安装、学习protobuf
Protobuf是什么? 类似于json的一种数据格式,独立于语言,而且是二进制方式,所以比json更快,而且还可以直接存储一些图.树 序列化和反序列化 持久化(存到磁盘硬盘)领域中,数据存到磁盘叫序 ...
- 8.21考试总结(NOIP模拟45)[打表·蛇·购物·ants]
有型的东西终究会消逝,不过--终于,这份回忆还是永远不朽的- 前言 这次考试暴露出来了不少问题. 比如答题策略策略不当导致 T2 的 65pts 暴力根本没有打. 知识遗忘太快不牢固,T4 是之前的一 ...
- react组件通信 父组件与子组件互相通信
父组件将自己的状态传递给子组件,子组件当做属性来接收,当父组件更改自己状态的时候,子组件接收到的属性就会发生改变 父组件利用ref对子组件做标记,通过调用子组件的方法以更改子组件的状态,也可以调用子组 ...
- IceRPC之依赖注入>快乐的RPC
作者引言 很高兴啊,我们来到了IceRPC之依赖注入>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. 依赖注入和IceRPC 了解 IceRPC (C#) 如何为依赖注入 ...
- VisionPro学习笔记(7)——FitLineTool
如果需要了解其他图像处理的文章,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice ...