当前位置: 首页 > article >正文

springboot——登录认证(包括jwt技术、拦截器过滤器)

实现登录的原理

用户名和密码都输入正确,登录成功,否则,登录失败

登录功能的本质:查询,根据用户名和密码查询员工信息

实现登录的步骤

登录需要确定用户的id、username、name、token(用于 身份校验),对此要重新定义一个类LoginInfo

public class LoginInfo {
    private Integer id;
    private String username;
    private String name;
    private String token;
    ...
}

此外为了单独实现这个登录需求,就要再新建一个LoginControllor

  // 声明一个方法,使用@PostMapping注解指定这个方法处理HTTP POST请求,路径为"/login"
    @PostMapping("/login")
    public Result login(@RequestBody Emp emp) {
        // 使用Logger记录登录请求的详细信息
        log.info("登录: {}", emp);

        // 调用empService的login方法,传入Emp对象,获取登录信息
        LoginInfo info = empService.login(emp);

        // 判断info是否不为null,即登录是否成功
        if (info != null) {
            // 如果登录成功,返回成功的结果,包含登录信息
            return Result.success(info);
        } else {
            // 如果登录失败,返回错误信息
            return Result.error("用户名或密码错误");
        }
    }
  • 这个注解@RequestBody通常与 @PostMapping@PutMapping 等注解一起使用,这些注解指定了处理特定类型的 HTTP 请求的方法。
  • @RequestBody 注解时,Spring MVC 会自动将传入的 HTTP 请求体中的 JSON(或其他格式,如 XML)数据转换成指定的 Java 对象。 

登录校验

会话技术

 Cookie

  • Cookie通常存储在用户的计算机上,每个Cookie包含一个名称、一个值和过期时间。
  • Cookie是存储在客户端的,服务器通过设置、读取和修改Cookie来与客户端进行交互,但并不直接存储Cookie数据。
  • 浏览器存储的Cookie可以在一定程度上帮助用户在下一次访问网站时无需再次输入密码。这是通过一个称为“持久登录”或“记住我”的功能实现的
  • 当用户下次访问网站时,浏览器会自动将存储的Cookie发送给服务器。服务器可以通过这个Cookie识别用户的会话,并恢复用户的状态,从而实现自动登录。
@GetMapping("/c1")
    public Result cookie1(HttpServletResponse response){
        response.addCookie(new Cookie("login_username","itheima")); //设置Cookie/响应Cookie
        return Result.success();
    }

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

第一次登录(localhost:8080/c1)就可以看到后端的cookie存储到了本地浏览器

 第二次再次登录(localhost:8080/c2)请求头里就携带了上次登录获取的cookie

Session

  • Session是一种服务器端存储,用于跟踪用户的状态。它存储了用户在访问网站期间的特定信息,如登录状态、用户偏好等。
  • Session技术通常会在用户的浏览器上存储一个Cookie,这个Cookie用于在用户的浏览器和服务器之间保持会话状态。这个Cookie通常包含一个Session ID,这是一个唯一的标识符,用于在服务器上查找与该用户相关的Session数据。
//存值
    @GetMapping("/s1")
    public Result session1(Http

http://www.kler.cn/a/446718.html

相关文章:

  • 海外外卖APP开发新方向:基于同城外卖系统源码的多元化解决方案
  • SQL语句自动加上了LIMIT 10,导致报错
  • Edge Scdn防御网站怎么样?
  • SpringBoot开发——整合JSONPath解析JSON信息
  • SLURM资料
  • 胡九道:经典传承(贵宾酒)
  • redis 在 win10中的使用
  • Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon
  • Kubernetes(k8s)安装详细过程
  • 服务器数据恢复—RAIDZ离线硬盘数超过热备盘数导致阵列崩溃的数据恢复案例
  • Docker 部署 新版 Nacos、Seata
  • Spring Cloud Gateway 源码
  • DB-GPT V0.6.3 版本更新:支持 SiliconCloud 模型、新增知识处理工作流等
  • Redis篇--常见问题篇3--缓存击穿(数据查询上锁,异步操作,熔断降级,三种缓存问题综合优化策略)
  • RabbitMQ消息可靠性保证机制7--可靠性分析-rabbitmq_tracing插件
  • sqlite3 支持位运算 和view和 triger
  • 使用JUnit进行集成测试
  • QT网络(一):主机信息查询
  • 【Super Tilemap Editor使用详解】(七):图块集纹理编辑器(Tileset Atlas Editor)
  • 矩形嵌套 之一题多解dp篇
  • 安全工具 搭建带有 Web 仪表板的Interact.sh
  • 自毁程序密码—阿里聚安全(IDA动态调试)
  • 宠物管理系统(1):Bean设计
  • EMMC , UFS, SSD介绍
  • 如何解决vscode powershell乱码
  • 解决PCL库中pcl::VoxelGrid降采样Bug