登录校验-Filter-登录校验过滤器

目录

思路

登录校验Filter-流程

步骤

流程图

登录校验Filter-代码

过滤器类

工具类

测试登录

登录接口功能请求

其他接口功能请求

前后端联调 


思路

  • 前端访问登录接口,登陆成功后,服务端会生成一个JWT令牌,并返回给前端,前端会将JWT令牌保存下来,在同一会话中共享JWT令牌信息,在访问其他功能接口时,前端会在请求头信息中存放JWT令牌信息,请求头的名称为token,过滤器Filter对请求实施统一拦截(登录请求不进行拦截,因为登录成功之后才会生成JWT令牌)并进行登录校验,如果JWT令牌存在并有效,Filter就会放行请求访问Web资源,否则返回错误信息。

登录校验Filter-流程

步骤

  • 获取URL
  • 判断请求中是否含有login,如果含有,说明是登录操作,放行
  • 获取请求头中令牌(token)信息
  • 判断令牌是否存在,如果不存在,返回错误结果(未登录)。
  • 解析token,如果解析失败,返回错误结果(未登录)
  • 放行

流程图

登录校验Filter-代码

过滤器类

  • package com.example.tlias.Filter;import com.alibaba.fastjson.JSONObject;
    import com.example.tlias.pojo.Result;
    import com.example.tlias.utils.JwtUtils;
    import jakarta.servlet.*;
    import jakarta.servlet.annotation.WebFilter;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.util.StringUtils;import java.io.IOException;@Slf4j
    @WebFilter(urlPatterns = "/*")
    public class LoginCheckFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;// 1.获取请求URL地址String url = request.getRequestURI().toString();log.info("获取到的URL地址为:{}", url);// 2.判断URL是否含有login路径,如果含有,则为登陆操作,放行if (url.contains("login")) {log.info("此请求为登陆操作,放行.......");filterChain.doFilter(request, response);return; //  todo 跳出过滤器}// todo 以下是对于不是登录操作的过滤// 3.获取请求头中的令牌(token)String token = request.getHeader("token");// 4.判断是否存在,如果不存在,返回错误结果(未登录)if (!StringUtils.hasLength(token)) {log.info("请求头token为空,返回为登录的信息");Result error = Result.error("NOT_LOGIN"); // 返回的错误信息通过接口文档与前端统一// todo 手动转换 将对象-->json格式数据===》可以使用阿里巴巴fastJson的工具包,在pom.xml配置文件中添加相关依赖// todo 控制类返回的对象会自动转换为JSON格式的字符串数据String noLogin = JSONObject.toJSONString(error);// 将数据写入响应对象response.getWriter().write(noLogin);return; // todo 跳出过滤器}// 5.解析token,如果解析失败,返回错误结果(未登录)try {JwtUtils.parseJWT(token);  // todo 如果解析失败方法就会报错} catch (Exception e) {  // token解析失败e.printStackTrace();log.info("解析令牌失败,返回未登录的错误信息");Result error = Result.error("NOT_LOGIN");String noLogin = JSONObject.toJSONString(error);response.getWriter().write(noLogin);return;}// 6.放行log.info("令牌合法,放行");filterChain.doFilter(request, response);}
    }
    

工具类

  • package com.example.tlias.utils;import io.jsonwebtoken.Claims;
    import io.jsonwebtoken.Jwts;
    import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;
    import java.util.Map;public class JwtUtils {private static String signKey = "itheima"; // 设置签名密钥private static Long expire = 43200000L; // 设置过期时间/*** 生成JWT令牌** @param claims JWT第二部分负载 payload 中存储的内容* @return*/public static String generateJwt(Map<String, Object> claims) {String jwt = Jwts.builder().addClaims(claims).signWith(SignatureAlgorithm.HS256, signKey).setExpiration(new Date(System.currentTimeMillis() + expire)).compact();return jwt;}/*** 解析JWT令牌** @param jwt JWT令牌* @return JWT第二部分负载 payload 中存储的内容*/public static Claims parseJWT(String jwt) {Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(jwt).getBody();return claims;}
    }
    

测试登录

  • 使用postman发送请求
    • 登录接口功能请求

      • 登陆成功(返回登录成功信息及令牌信息)
      • 登陆失败(返回登录失败信息)

    • 其他接口功能请求

      • 未登陆成功访问其他接口功能

        • ​​​​

      • 登陆成功访问其他接口

前后端联调 

Nginx项目压缩包地址如下:

https://hkm-web.oss-cn-beijing.aliyuncs.com/%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3

运行及如果如下:

现在启动项目后会自动跳转到登陆界面,而不是和以前一样直接进入登陆后的界面

 成功登录后就可以进入登陆后的界面

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620038.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌相册明年取消无限空间储存政策

简单介绍 据可靠消息称谷歌相册将从明年夏季也就是 2021年6月1日 开始取消无限存储容量政策。从明年夏季开始继续上传照片和视频将占用谷歌分配给用户的15 GB免费空间。 原文转载自浅行浅醉博客 原文阅读&#xff1a;点击阅读

黑客盯上了Google相册漏洞

2019独角兽企业重金招聘Python工程师标准>>> 研究人员在Google相册应用上发现了一个已修复的漏洞。有了这个漏洞&#xff0c;黑客可以使用Google相册来跟踪他们的位置历史记录。 来自互联网安全公司Imperva的Ron Masas在博客文章中解释说&#xff0c;Google相册最近…

笔记本电脑与台式机同步连接_如何将台式机与Google云端硬盘(和Google相册)同步...

笔记本电脑与台式机同步连接 Google has been doing its part to make sure everyone has a backup of important data, and it recently released a new tool for Windows and Mac users to take that redundancy to the next level. Appropriately named Backup and Sync, it…

vue查看本地相册_使用Vue.js构建的Google相册相册查看器

vue查看本地相册 google-photos-vue (google-photos-vue) Google Photos album viewer built with Vue.js. 使用Vue.js构建的Google相册相册查看器。 特征 (Features) 格式 (Formats) 照片 (Photo) Conventional grid. 常规网格。 文本 (Text) Justified layout highlighting…

复古拼贴_如何在Android上使用Google相册创建拼贴,动画或电影

复古拼贴 Google Photos is a huge improvement over Android’s old “Gallery” app, but it does a lot more than just keep your stuff organized and synced. You can easily manipulate your photos into some very cool, shareable collages, animations, and even mov…

多亏了Google相册,如何一键释放Android手机上的空间

Let’s be real here: modern smartphones have limited storage. While they’re coming with a lot more than they used to, it’s easy to fill 32GB without even realizing it. And with today’s high-end cameras, well, pictures and videos can quickly consume a bi…

如何在Android的相机应用程序中添加Google相册快捷方式

Google Photos is arguably the best photo management app on the Play Store. It’s intuitive and easy to use, has lots of useful features, and best of all, it backs up all of your images. The thing is, if you’re using a non-stock Android phone—like an LG G…

谷歌相册也不能无限白嫖了,「地主家」也烧不起免费网盘

木易 发自 凹非寺 量子位 报道 | 公众号 QbitAI 连Google都撑不住了。 Google相册宣布&#xff1a;从2021年6月1日开始&#xff0c;将停止提供免费的无限制存储空间。 这意思&#xff0c;是不让「白嫖」了&#xff1f; 不不不&#xff0c;只是不能无限白嫖了。 Google相册还是会…

android仿漫画源码、抽奖转盘、Google相册、动画源码等

Android精选源码 android实现仿今日头条的开源项目 波浪效果&#xff0c;实现流量的动态显示 美妆领域的app, 集成了摄像头取色, 朋友圈, 滤镜等 android仿漫画源码 android一个视差动画的引导页效果 Android 仿美团app头部左右切换效果 android银行卡操作步骤 Android自定义Vi…

谷歌云端硬盘 转存_如何合并多个Google云端硬盘和Google相册帐户

谷歌云端硬盘 转存 It isn’t possible to merge Google accounts directly, making it tricky to move your data from A to B. If you want to merge data across multiple Google Drive and Google Photos accounts, here’s how you do it. 无法直接合并Google帐户&#xf…

如何防止某些照片显示在Android的图库或Google相册中

Look, we get it: you don’t want every picture showing up in your gallery app on your Android phone. The thing is, there’s not an easy way to just let Gallery or Google Photos know you want to keep certain photos (or even folders) private. But there is a …

英汉汉英词典,牛津高级词典,电子词典,离线英汉,汉英词典的使用方法

1.软件准备&#xff0c;https://www.mdict.cn/wp/?page_id5227&langzh 2.mdx与mdd文件准备 3.导入&#xff0c;按照顺序来 4.选择对应的词库就可以使用了 5.使用展示 6.下载安卓版本&#xff0c;就可以在手机使用离线词典 安卓版将词典文件放在这个目录下即可

海词词典android v3.1.2新版发布 英语学习必备工具,海词词典Android V3.1.2新版发布 英语学习必备工具...

海词词典Android V3.1.2新版发布支持智能语音查词、极速智能翻译、云端生词本、在线背单词&#xff0c;集查词、在线翻译、英语学习、词典下载、单词记忆、每日学习板块等功能于一身&#xff0c;是一款深受广大英语学习者喜爱的专业免费在线词典翻译软件。 新版官方正式下载地址…

android 编程词典,基于Android的英文词典的实现方法

英文词典是手机中经常使用的应用。因此&#xff0c;在本文将结合Android来讨论如何实现一个Android版的英文词典。实现英文词典的方法很多。在本文使用了SQLite数据库来保存英文单词信息。系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息。当然&#xf…

有道手机词典

今天打开有道词典&#xff0c;无意中发现多了一行字"词典手机版更新(多款机型支持摄像头查词)"&#xff0c;oh my lady gaga,居然可以支持摄像头查词&#xff01; 于是兴冲冲的到这里下载&#xff0c;没找到我手机的型号(Nokia5530),就点了5800&#xff0c;反正都是S…

手机电子词典_论央视主持人的个人修养:习惯性纠正他人读音,手机里装着电子版词典!...

中国播音主持网公益直播 ——播音主持公开课—— 搜索关注抖音号&#xff1a;中国播音主持网 今晚七点 大咖直播嘉宾 深圳电视台 鹏远 在日常生活中&#xff0c;其实我们都会遇到某个字我们不认识的情况&#xff0c;而一般这种情况下&#xff0c;我们会选择瞎读&#xff0c;导致…

mdx格式的词典用什么软件打开_分享 | 手机词典推荐—欧陆词典(涵盖牛津、朗文等14部权威英语辞典)...

前言&#xff1a; 小编在前一篇文章中提到过&#xff1a;英语词汇学习的重点&#xff0c;是熟练掌握那些平时常见词汇的用法。在学习词汇用法的时候&#xff0c;手机词典最好具备两个优点&#xff1a;1&#xff0c;可屏幕取词&#xff1b;2&#xff0c;词典为业内权威。 小编试…

mdx词典包_译者的电子工具——手机词典上篇

在之前的文章里&#xff0c;我们已经介绍了常用的桌面词典&#xff0c;包括有道、金山、灵格斯和欧路&#xff0c;接下来将为大家带来一些好用的手机词典&#xff0c;方便我们在没有电脑的情况下一样用到词典神器。 欧路词典 没错&#xff0c;我们依然隆重推荐可扩充词库的欧路…

手机电子词典_【摘要】陈玉珍:词典使用对搭配产出与记忆保持的效能研究—— 以手机在线词典为例...

一 引言 对于EFL学习者而言&#xff0c;搭配习得是一项巨大的挑战&#xff0c;即便是高阶学习者在搭配使用方面也会遇到困难。词典研究者早就意识到搭配的重要性&#xff0c;广泛关注与词典编撰理论与实践相关的各类搭配研究主题&#xff0c;强调要加强对多词单位的描写&#x…