session 拦截器中获取不到session值_拦截器实现登陆验证

案例效果:

17e5b83f6e91f53e356e2ce5cbaa1217.png

介绍↑:进入主页,分别看到“登录页面”和“首页"。


2a5a2ce3246d16653b4419613c2baba6.png

介绍↑:点击进入“登录页面”后输入“用户名和密码”点击提交就可以跳转到首页。


5b431ea4403e0c33aec8f4fc9ac238ab.png

介绍↑:已跳转到首页


8a8942b5923ffde905432e446c2f7667.png

介绍↑:回到“主页”,点击“首页”。


059f4d194c8cb4c97be932d18ea30eaf.png

介绍↑:进入首页。这里是本项目的关键:用户刚刚已经登录,那么他可以直接进入首页


f5bc9214d22d6a44a830caf4c1cfa757.png

介绍↑:点击上一张图中的“注销账户”之后,自动跳转到“登录页面”。


3e8fbd9fb508c228246b4676bcb65b5c.png

介绍↑:手动回到“主页”。


9c970365ab668f0af5eff7b53ee7c9ff.png

介绍↑:点击首页,进入了登录页面。这里也是本项目的关键点:用户注销之后不能再进入首页,他要先登录,才能再次进入。

案例分析:

本案例中实现了如果用户已经登录那么直接让用户免登录进入页面,如果用户没有登陆,那么先让用户登录。

实现过程

工具/原料:

cb683e6264f999acbd9c52285ee92ecd.png

过程:

94ac4d7e2e69da17169d7dbced22ea8b.png

浏览器是用来拦截请求的,有的请求可以通过拦截器访问到Controller,有的则无法通过拦截器,被阻挡到拦截器外无法访问Controller。

请求能不能通过拦截器具体看拦截器的代码。在拦截器里面有一个重要的参数是true/false。

0ae7571599679f06af6c2267118eedbe.png

如何判断用户是否处于登陆状态?

用户第一次登陆的时候,请求发给controller,拦截器中途拦截到该请求,拦截器得知该请求指向登陆页面,估给请求放行。请求被放行后访问到controller,然后在controller的代码里面生成了一个session,用户登录成功。当用户再次访问网页的时候,用户给controller发送请求一串代码,拦截器拦截了该请求,根据改代码查找有没有一个对应的session,有的话拦截器给请求放行,没有的话就说明用户还没有登陆,拦截器将其拦截。

PS:该项目中用户没有给controller发送一串代码,该项目只是用了一个极其简单的手法让请求通过。一般来说浏览器第一次访问服务器服务器会生成一个cookie和session,然后服务器将cookie发送到浏览器。浏览器第二次访问服务器时,浏览器自动向服务器发送一个cookie,然后拦截器获取该cookie来与session比对。

总结:掌握了拦截器的用法,但对服务器和浏览器之间的验证依然比较陌生。

Github下载地址:https://github.com/zjjackyyue/SSM-01-SimpleSSM.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值