首页 > 编程语言 >(javaweb)登录功能的校验与认证

(javaweb)登录功能的校验与认证

时间:2024-08-25 10:25:55浏览次数:9  
标签:令牌 浏览器 javaweb 登录 -- 校验 认证 请求

目录

1.基础登录功能

2.登录校验概述

登录认证:

1.会话技术

2.三种会话技术的对比

1.cookie

2.Session

3.令牌技术

登录校验

JWT令牌

1.令牌介绍

2.生成和校验

3. 登录后下发令牌

过滤器filter

快速入门

详解(执行流程 拦截路径 过滤器链)

过滤器链

拦截器Interceptor

 快速入门

详解

异常处理


1.基础登录功能

认证:根据用户名和密码校验用户身份的过程。登录成功才可以访问系统中的信息。否则就拒绝访问。

校验:当发起请求时,服务端判断是否登录,如果登录则进行正常的业务操作。(核心)

2.登录校验概述

问题:在登录的界面直接复制访问上面的URL地址,仍然能够访问到,存在不安全的问题。

http协议:无状态的--每一次请求都是独立的 下一次请求并不会携带上一次的请求数据--效率高

浏览器和服务器进行交互--基于http协议

要在服务端判断用户是否已经登录--就需要在员工登录成功之后有一个登录标记(web中的会话技术)

如果一直判断是否完成登录再执行相关操作,就会十分的繁琐---解决方法:统一拦截

拦截浏览器所发送的请求,对请求进行校验,校验员工是否登录

校验方式:获取登录标记---若获取到且没有问题---已经登录--就放行(访问正常的业务接口)

                                       ---若未获取或者获取到错误的信息,直接给前端响应一个错误信息,前端自己跳转到登录页面

登录认证:

1.会话技术

会话:浏览器与服务器之间的一次连接

用户打开浏览器第一次访问服务器--会话建立   其中任何一方断开--会话结束     一次会话包含多个请求和响应

浏览器和服务器都没有关闭 请求都是在一次会话当中完成的

会话和浏览器相关联

若多次请求都是来自于同一个会话--就可以在多次请求之间共享数据

2.三种会话技术的对比

1.cookie

 

存在cookie---之前已经登录完成

服务器会自动的将cookie响应给浏览器  浏览器接收到会自动存储在浏览器本地  后续请求浏览器会自动将cookie携带到服务端

自动化进行:cookie是http协议中支持的技术,各大厂商都支持这一标准

//只要其中任意一个不同--就是跨域cookie不能跨域

//其中 端口号和ip号都不同 属于跨域

2.Session

session--服务器端会话跟踪技术  存储在服务端 底层基于cookie来实现

请求完成--服务器自动创建session对象,session都有对应的id  服务端通过cookie将id响应给客户端浏览器(在响应头当中增加set-cookie这个响应头)  浏览器接收到id值自动存储

//其中 1就是id值

3.令牌技术

令牌技术--用户身份的标识--本质:就是一个字符串  登陆成功--生成令牌--合法技术的凭证   最后将技术响应给前端

浏览器接收到令牌--将令牌存储起来:可以存储在cookie当中 也可存储在其他的存储空间当中

后续的操作都需要将令牌携带到服务端--服务端校验令牌的有效性

要共享的数据存储在令牌当中

令牌技术--主流方案

登录校验

JWT令牌

1.令牌介绍

2.生成和校验

 首先要引入依赖

java代码来解析jwt令牌

此时:已成功解析出来   一旦有误:解析失败  验证了它安全可靠  已经过期的令牌则已失效 不能使用解析

3. 登录后下发令牌

登陆成功 生成jwt令牌 并给前端下发

统一拦截 并校验令牌的有效性:过滤器filter 拦截器interceptor

过滤器filter

快速入门

要访问后面的资源--必须先经过filter  资源访问完毕 又会回到过滤器

init初始化方法--资源及环境的准备操作(只调用一次)     

与之对应:destroy资源的释放和环境的清理(服务器关闭时调用 只调用一次)

每次拦截到请求都会调用doFilter这个方法

/*代表所有--指的是当前服务器要拦截所有的请求

package com.itheima.filter;

import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;


@Component
@WebFilter(urlPatterns = "/*")// /*表示要拦截所有
public class DemoFilter implements Filter {


    @Override//初始化 只调用一次
    public void init(FilterConfig filterConfig) throws ServletException {

        System.out.println("init方法执行了");
    }

    @Override//拦截到请求之后调用 调用多次
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("拦截到了请求");
        chain.doFilter(request,response);


    }

    @Override//销毁方法 只调用一次
    public void destroy() {
        //Filter.super.destroy();
        System.out.println("destroy销毁方法执行了");
    }
}

详解(执行流程 拦截路径 过滤器链)

 

放行:让其访问对应的web资源

过滤器链

@WebFilter(urlPatterns = "/*")
public class AbcFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("demo拦截到了请求 放行前");
        chain.doFilter(request,response);
        System.out.println("demo拦截到了请求 放行后");
    }
}

 执行的优先级与类名有关系

拦截器Interceptor

 快速入门

/**代表拦截所有

详解

Tomcat--servlet容器 只识别servlet

servlet转给controller,先要被拦截器所拦截,对请求进行处理

filter拦截所有 但是intercepter只会拦截进入spring中的

异常处理

有异常:如何处理?---全局异常处理器--给前端响应统一的结果result,result中封装错误的信息。

 这个可以将方法的返回值转化为JSON格式 

exception.class(表示要捕获所有的异常)

//result中封装错误的提示信息 最终将result响应给前端

标签:令牌,浏览器,javaweb,登录,--,校验,认证,请求
From: https://blog.csdn.net/2301_79144798/article/details/141281889

相关文章

  • SpringBoot自定义校验
    通常情况,后端在业务层需要进行大量校验,写在业务层又不美观,而且需要重复编写,很是不方便,Spring提供的校验注解有时无法满足我们的需求,需要自定义校验规则,以校验手机号为例,下面开始自定义校验一、引入依赖引入Spring校验依赖包<dependency>  <groupId>org.springframework......
  • 利用Spring Boot实现微服务的API网关统一认证与授权
    利用SpringBoot实现微服务的API网关统一认证与授权大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!微服务架构中的安全需求在微服务架构中,服务被拆分成多个独立的、可独立部署的单元。这种架构虽然带来了灵活性,但也增加了安全性的挑战。API网关作为......
  • C#面:在 MVC 中如何执行 Windows 认证?
    在MVC中执行Windows认证可以通过以下步骤实现:在Web.config文件中启用Windows身份验证。找到<system.web>节点,并确保已经添加或者设置。在Controller的Action方法上使用[Authorize]属性来限制只有经过Windows身份验证的用户才能访问该Action方法。在View......
  • 利用Spring Boot实现微服务的API网关统一认证
    利用SpringBoot实现微服务的API网关统一认证大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,API网关是服务对外的统一入口,它负责请求路由、负载均衡、认证授权等。统一认证是确保只有合法用户才能访问服务的关键环节。SpringBoot结合......
  • python实现token签名认证
    当你注册了一个网站,通常,网站会向你的邮箱里发一封激活邮件,邮件里会有一个url,只有当你点击这个url,才能激活你的用户身份。如何完成身份确认呢?通常,邮箱里的那个url里会有一个token,这个token是所有问题的关键,当你点击url,网站后台会受到这个请求,得到这个token,网站必须通过这个token找......
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用性能优化一(界面层面)
    学完时间:2024年8月22日学完排名:第1801名一、介绍在开发HarmonyOS应用时,优化应用性能是至关重要的。通过/ArkTS高性能编程、减少丢帧卡顿、提升应用启动和响应速度可以有效提升用户体验。本文将介绍一些优化HarmonyOS应用性能的方法。一、ArkUI框架执行流程在使用A......
  • Javaweb+jsp外卖点餐系统+源码(三)
    第三章详细设计3.1 用户的主界面用户的主菜单界面。页面如图3-1所示:图3-1 用户的主界面3.2用户注册页面用户在首次登录外卖订餐系统管理页面时,需要在注册页面需要完成个人信息的注册。页面如图3-2所示:图3-2外卖订餐系统的注册页面3.3用户登录界面用户通......
  • 身份证识别、护照OCR、python身份证四要素实名认证API
    翔云身份证实名认证与身份证识别接口让你的APP在众多竞品中脱颖而出,仅需一键上传,用户身份信息便能快速提取,精准核验,告别繁琐的手动输入与反复核验,简化身份验证流程,提升用户体验,现已被广泛应用于电商、在线教育、金融等各类生活服务类APP中。python身份证实名认证接口代码......
  • 使用 JsonSchema 校验 JSON数据
    有时候JSON数据格式需要校验是否合法,我们可以使用JsonSchema来校验数据是否合法。引入pom.xmlhttps://json-schema.org/<dependency><groupId>com.networknt</groupId><artifactId>json-schema-validator</artifactId><versio......
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 自由流转
    学完时间:2024年8月21日学完排名:第2253名一、基本概念1.流转在HarmonyOS中,将跨多设备的分布式操作统称为流转。流转能力打破设备界限,多设备联动,使用户应用程序可分可合、可流转,实现如邮件跨设备编辑、多设备协同健身、多屏游戏等分布式业务。流转为开发者提供更广的使......