BOS项目(SSH)03_03_登录功能-登录拦截器、 防止跳过登录直接进主页

系列文章目录

前言

如果没有“登录拦截器”,那么只要具体的知道地址栏的struts规则
直接这样访问你内部的主页
【注意】(旧版)ie如果前面没有http://, 需要手动加上 http://(qq浏览器等可以自动内部帮你加上http://,这样你不写,它也能正常访问)
在这里插入图片描述

http://localhost:8080/page_common_index
在这里插入图片描述
即使不知道账号密码也可以跳过登录,直接在地址栏输入网址,进入主页面
这样就没有安全性,是不合理的
细思极恐,太恐怖了
在这里插入图片描述

一、解决办法——配置一个登录拦截器

在这里插入图片描述
以前通用的做法,第一步是这样的
在这里插入图片描述
如果按照以前
每个页面都要去判断session,其实还是挺麻烦的
那么这里我们就可以在以前的基础上使用现在使用框架的做法了
我们使用拦截器
先看一下资料,此处有说明
在这里插入图片描述
下面是具体做法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在struts里面配置一个全局的结果视图
在这里插入图片描述
下面进行第2、3步
在这里插入图片描述
在这里插入图片描述
然后就是最后一步,修改struts默认的拦截器了
我们只不过是在struts原有的基础上加上一个登录拦截器
在这里插入图片描述
这样就完成了
下面测试,
在这里插入图片描述
然后再打开ie(获取其它浏览器)再看看能不能按照规则(跳过登录)直接访问主页
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这是顺序问题,改一下顺序即可
在这里插入图片描述

为了更好的看到代码走到哪了,加一个这样的标志
在这里插入图片描述
然后继续测试
在这里插入图片描述
这样就成了,只要不经过登录直接访问具体页面的,都会默认给你跳回到登录页面来

但是我们发现有其它的问题了
正常的登录用不了了
为什么会这样呢?
因为正常的登录不需要进入拦截器,而我们登录操作也进拦截器了,这样是不对的
在这里插入图片描述
在这里插入图片描述
怎么解决。很简单

登录拦截器要排除一个方法
在这里插入图片描述

在这里插入图片描述
注意:访问jsp是不会被拦截的,struts里面只有Action才会被拦截(除非改了struts规则)
在这里插入图片描述
那为什么还是出现了
在这里插入图片描述
这是因为主页里面加载那些菜单之类的,还是会被拦截
在这里插入图片描述
在这里插入图片描述
这是因为主页里面加载那些菜单之类的,还是会被拦截
在这里插入图片描述
在这里插入图片描述
再次点击登录
可以看到login.jsp这个方法是不会被拦截的

注意

访问jsp是不会被拦截的,只有Action才会被拦截

总结

* 1、写一个拦截器
* 2、在struts.xml里面配置一个登录拦截器
* 3、配置一个拦截组,把登录拦截器和struts配置拦截器添加进组
* 4、修改struts默认拦截器
* 5、在登录拦截器排除一些不需要拦截的方法

猜你喜欢

转载自blog.csdn.net/qq_41753340/article/details/115202410