JavaWeb-登录验证

1、会话技术

会话:打开浏览器访问web资源与服务器建立会话,一次会话可进行多次请求,关闭浏览器即关闭会话。

会话跟踪:服务器识别多次请求是否是同一个浏览器发来的,以便在同一会话的多次请求间共享数据。

(1)客户端会话跟踪技术(存在客户端):Cookie(请求头cookie,响应头set-cookie)

 优缺点:移动端APP无法使用cookie、不安全用户可以自己禁用cookie、cookie不能跨域

(2)服务端会话跟踪技术(存在服务器端):Session

优缺点:存在服务器安全、服务器集群环境下无法直接使用session、是基于cookie的所以也有cookie的缺点

(3)令牌技术:JWT(JSON Web Token),用于在通信双方以json数据格式安全的传输信息。由于数字签名,所以信息可靠。包括Header(头,记录令牌类型、签名算法等)、Payload(载荷,携带自定义信息、默认信息)、Signature(签名,防止Token被篡改。将header和payload根据签名算法加密加入)

优缺点:支持pc端和移动端、解决集群环境下的认证问题减轻服务器端存储压力,但是需要自己实现

生成:

HashMap<String,Object> map = new HashMap<>();
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.SECOND,20);
        String token = JWT.create()
                .withHeader(map) //可以不设定,就是使用默认的
                .withClaim("userId",20)//payload  //自定义用户名
                .withClaim("username","zhangsan")
                .withExpiresAt(instance.getTime()) //指定令牌过期时间
                .sign(Algorithm.HMAC256("fdahuifeuw78921"));//签名

解析:

JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("fdahuif921")).build();
        DecodedJWT decodedJWT = jwtVerifier.verify(token);
        decodedJWT.getClaim("userId").asInt();//获取负载里面对应的内容
        decodedJWT.getClaim("username").asString();
        decodedJWT.getExpiresAt();//获取过期时间

常见异常:

SignatureVerificationException //签名不一致异常
TokenExpiredException //令牌过期异常
AlgorithmMismatchException //算法不匹配异常
InvalidClaimException //失效的payload异常(传给客户端后,token被改动,验证不一致)

2、JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器

过滤器Filter:可以把对资源的请求拦截下来,实现特殊功能。一般完成一些登录校验、统一编码处理、敏感字符处理等通用操作。配置:@WebFilter(urlPatterns="/*")、@ServletComponentScan

(重温)JavaWeb--Filter 过滤器(JavaWeb 的三大组件之一)_轻狂书生FS的博客-CSDN博客

3、Intercepter拦截器(Spring框架中的):拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。

拦截器Interceptor_靖瑶_的博客-CSDN博客

过滤器和拦截器区别:

        过滤器基于函数回调、拦截器基于反射;

        过滤器几乎对所有请求起作用,拦截器只对目标执行方法起作用;

        过滤器对请求进行预处理、再交给Servlet处理并且生成响应,最后Filter再对服务器响应进行后处理;

        过滤器会拦截所有资源,拦截器只会拦截Spring环境中的资源

        拦截器可以在方法执行前调用(preHandle),方法执行后调用(postHandle),视图页面渲染后调用(afterCompletion)。

 4、异常处理:全局异常处理器,类注解@RestControllerAdvice(相当于@RestController+@ResponseBody,可以将返回的错误信息转化成JSON格式返回供前端解析)、方法注解@ExceptionHandler(响应的错误类型)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值