登录拦截整体描述和疑问

来源:12-8 AOP实现身份验证

三又十二分之四

2019-08-03

师兄,我原来学的登录拦截是这样的:
1、在Controller中的login 映射路径中,入参为用户名和密码
根据用户名和密码去数据库查询用户,用户为空,跳转登录页面,不为空,跳转主界面,并把用户保存在session中。
图片描述

2、再配置拦截器,在preHandle中判断session中的用户是否为空就好了
图片描述

本次课程里面:
1、从数据库验证openid的存在,然后在redis和cookie中保存用户。 起的作用和上面的第一步是类似的吧。
图片描述

2、利用aop实现拦截和上面的第2步拦截器起的作用也应该是类似的吧。
图片描述

问题:
1、本次课程的第2步,可以不使用aop,直接使用拦截器吗?
在拦截器中验证cookie是否为空,验证redis的token是否为空,为空的话直接跳转到登录页面。不为空跳转到专业面。

2、师兄在aop中判断cookie为空不通过的时候,选择抛出异常,再从异常里实现跳转。为什么不直接跳转登录页面呢?是有什么考虑吗,还是个人喜好?

3、为什么不直接使用上面的第一种登录拦截方式,要引入redis,虽然课程介绍了跟分布式有关,但是我确实没学过分布式的相关课程,只在师兄这听到分布式,所以还是体会不到加入redis多存一次token,进行验证的好处。?
麻烦师兄再解释一下

4、为什么用到cokie,而不用session?有什么考虑吗?
我知道两者的区别cookie数据是保存在浏览器中的,session是保存在服务器中的。是怕存在session中占用服务器资源吗?

写回答

1回答

廖师兄

2019-08-04

1. 推荐用拦截,比aop更易通俗易懂
2. 不直接跳转,选择拋异常是为了以后的异常统一处理
3. session是储存在服务器上的,你这个java程序部署到2台以上服务器上,校验就会出问题了

0
3
三又十二分之四
非常感谢!
2019-08-05
共3条回复

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程