登录拦截整体描述和疑问
来源: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回答
-
1. 推荐用拦截,比aop更易通俗易懂
2. 不直接跳转,选择拋异常是为了以后的异常统一处理
3. session是储存在服务器上的,你这个java程序部署到2台以上服务器上,校验就会出问题了032019-08-05
相似问题