登录校验原理过程和统一拦截技术(Cookie、Sesstion 和JWT令牌)

这篇具有很好参考价值的文章主要介绍了登录校验原理过程和统一拦截技术(Cookie、Sesstion 和JWT令牌)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、登录校验

  • 问题:在未登录情况下,我们也可以直接访问部门管理、员工管理等功能。
  • 由于浏览器与web服务器中的数据交互是通过HTTP协议的,而HTTP协议是无状态的–即每个页面中的请求和响应都是独立的,没有状态存在。
  • 所以我们需要进行登录校验

1.登录校验

  • 每次访问页面的时候可以用if...else...来进行判断用户是否登录。但过程较为繁琐,所以我们设置统一拦截。

二、统一拦截

登录校验原理过程和统一拦截技术(Cookie、Sesstion 和JWT令牌)

1.登录标记

(1).会话技术:

  • 用户登录成功之后,每一次请求中,都可以获取到该标记。
  1. 会话:
  • 用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束在一次会话中可以包含多次请求和响应。
  1. 会话跟踪:
  • 一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

(2).会话跟踪方案:

  1. 客户端Cookie(传统)
  • 客户端会话跟踪技术:Cookie
import com.mannor.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

@Slf4j
@RestController
public class SessionController {
    //设置cookie
    @GetMapping("/c1")
    public Result cookie(HttpServletResponse response) {
        response.addCookie(new Cookie("login_username", "mannor"));//设置Cookie/响应Cookie
        return Result.success();

    }

    @GetMapping("/c2")
    public Result cookie2(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();//获取所有的Cookie
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals("login_username")) {//输出name为 login_username 的cookie
                System.out.println("login_username: " + cookie.getValue());
            }
        }
        return Result.success();
    }
}

优点:HTTP协议中支持
缺点:1.移动端APP无法使用cookie不安全,2.用户可以自己禁用,3.Cookiecookie不能跨域。

  1. 服务端Session(传统)
  • 服务端会话跟踪技术:Session,基于cookie开发
import com.mannor.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

@Slf4j
@RestController
public class SessionController {
    //往HttpSession中存储值
    @GetMapping("/s1")
    public Result session1(HttpSession session) {
        log.info("attpSession-s1: {}", session.hashCode());
        session.setAttribute("loginUser", "tom");//往session中存储数据
        return Result.success();
    }

    //从HttpSession中获取值
    @GetMapping("/s2")
    public Result session2(HttpServletRequest request) {
        HttpSession session = request.getSession();
        log.info("HttpSession-s2:{}", session.hashCode());
        Object loginUser = session.getAttribute("loginUser");//从session中获取数据
        log.info("loginUser: {}", loginUser);
        return Result.success(loginUser);
    }
}

优点:存储在服务器,安全性高
缺点:1.在服务器集群的情况下无法直接使用Session; 2.Cookie的缺点(基于Cookie开发)。

  1. JWT令牌技术 (主流技术)
//具体相关内容在下详细介绍

优点:1.支持PC端和移动端 2.解决了集群环境下的认证问题 3.减轻了服务器端存储的压力(不用存储)。
缺点:需要自己实现。文章来源地址https://www.toymoban.com/news/detail-500543.html

到了这里,关于登录校验原理过程和统一拦截技术(Cookie、Sesstion 和JWT令牌)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (13)session和cookie的原理分析,完成(免)登录和安全退出功能

    三种域对象 这三个域对象的大小关系: request session application, 尽量使用小的域 request 请求域(请求级别的), 对应的类名:HttpServletRequest session会话域(用户级别的), 对应的类名:HttpSession application应用域(项目级别的,所有用户共享的)对应的类名:ServletContext 三个域对象都

    2024年02月16日
    浏览(37)
  • Node.js | 详解 Cookie-Session登录验证 的工作原理

    🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 🖥️ 本系列专栏:Node.js从入门到精通 👉 你的一键三连是我更新的最大动力❤️! 📢 欢迎私信博主加入前端交流群🌹 目前绝大多数的系统都少不了 登录验证 的功能,这主要是为了保存用户的状态,以此来限制用户的各种行

    2024年01月17日
    浏览(38)
  • 【Spring实战项目】SpringBoot3整合WebSocket+拦截器实现登录验证!从原理到实战

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年04月17日
    浏览(58)
  • web学习--登录认证--会话技术--cookie--session--令牌--java-jwt使用--jjwt使用

    前置学习: http springmvc 会话:用户打开浏览器,访问web服务器资源,会话建立,直到有一方断开连接会话结束,一次会话可以多次请求和连接 会话跟踪:一种维护浏览器状态的方式,服务器需要识别多次请求是否来自同一浏览器,以便同一次会话多次请求间共享数据。 cooki

    2024年02月15日
    浏览(67)
  • 统一异常拦截和非法sql拦截

    目录 统一异常拦截 异常拦截的原因: 实现原理: 核心代码: aop切面实现操作记录(操作留痕) 业务场景: 实现原理: 核心代码: 非法sql拦截 业务场景: 实现原理: 核心代码: 1,对于前端用户比较友好。通过统一异常拦截我们可以将后端的异常(没有try,catch住的)给

    2024年02月05日
    浏览(47)
  • 【程序猿包邮送书:第四期】《分布式统一大数据虚拟文件系统——Alluxio原理、技术与实践》

    🌹欢迎来到 爱书不爱输的程序猿 的博客, 本博客致力于知识分享,与更多的人进行学习交流 🚩🚩🚩 点击直达福利 当今,我们的世界已经进入一个数据时代。随着互联网、物联网、5G、大数据、人工智能、自动驾驶、元宇宙等信息技术的快速发展,人们在产生、收集、存储

    2024年02月09日
    浏览(67)
  • Spring 统一功能处理(拦截器)

    SpringBoot统一功能处理。也就是AOP的具体实现。 最原始的用户登录验证方法,我们通过封装了一个方法来判断用户是否登录,但如果实现的功能多了,那么每一个需要登录的功能都要在对应的接口中来调用这个函数来判读是否登录。 上面的代码虽然已经封装成了方法,但是如

    2024年02月03日
    浏览(54)
  • springmvc统一异常处理拦截器

    使用@RestControllerAdvice+@ExceptionHandler实现 也可以使用@ControllerAdvice+@ResponseBody+@ExceptionHandler实现 创建一个异常处理的类,放在config包下  组件类:  也可以让不同的异常返回不同的结果,捕获什么异常由@ExceptionHandler的value属性决定,传入一个类对象(可以通过反射获得)  

    2024年02月15日
    浏览(42)
  • springboot统一拦截包装接口返回值

    1、作用 代替手动封装每个接口的返回值,否则每个有返回值的controller接口,都需要手动使用Resonse类包装返回结果 2、实现 方法返回值handler,需要实现接口HandlerMethodReturnValueHandler,并重写supportsReturnType和handleReturnValue方法。只有在supportsReturnType方法返回值为true的情况下才会

    2024年02月13日
    浏览(57)
  • SpringBoot统一功能处理(拦截器)

    1.1自定义拦截器 写一个类去实现 HandlerInterceptor接口 表示当前类是一个拦截器,再 重写HandlerInterceptor接口中的方法 , preHandle 为在方法 执行前拦截 ,postHandle为方法执行中拦截,afterCompletion为方法执行中拦截.需要在什么时候拦截就重写什么方法 2.1.配置拦截规则 实现 WebMvcConfigur

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包