系列文章目录
文章目录
前言
如果没有“登录拦截器”,那么只要具体的知道地址栏的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、在登录拦截器排除一些不需要拦截的方法