SSH学习——Struts2拦截器实现登录权限验证
来源:互联网 发布:dw淘宝代码使用教程 编辑:程序博客网 时间:2024/06/06 08:57
前言
都知道网站安全很重要,特别是网站后台。网站后台可以对网站信息进行管理,但是如果没有登录就可以直接访问管理页,那风险就大了去了。所以在进入管理页之前,一定要做登录验证,这时Struts2的拦截器就可以很好的发挥作用了。
Struts2拦截器
拦截器是Struts2的核心,可以在Action和result进行之前或之后进行处理。它是基于AOP的原理实现的,面向切面编程使得拦截器和实现类的耦合性更低。
实现原理
拦截器是在Action提交之前,动态的拦截Action,然后查询配置文件,如果当前的Action配置了拦截器,那么就相应的实例化出拦截器对象,并串联成表,最后一个一个调用拦截器。
如何使用
1、定义拦截器
在你的项目中创建类包,然后创建拦截器类,拦截器可以实现Interceptor接口,然后实现里面的init、destroy和intercept方法。其实最主要的是实现intercept方法,因为它是拦截器主要执行的方法。在这里是继承了MethodFileterInterceptor类,在这个类里面有一个doIntercept方法,用ActionInvocation的invoke方法来执行拦截器。执行时是判断Session中是否存在用户,如果存在表示用户已经登录,可以进入管理页;如果不存在,表示没有登录,提示并返回登录页面。
public class PrivilegeInterceptor extends MethodFilterInterceptor{@Override//执行拦截的方法protected String doIntercept(ActionInvocation actionInvocation) throws Exception {// 判断session中是否保存了后台用户的信息AdminUser existAdminUser = (AdminUser)ServletActionContext.getRequest().getSession().getAttribute("existAdminUser");if(existAdminUser == null){//没有登录进行访问ActionSupport actionSupport = (ActionSupport)actionInvocation.getAction();actionSupport.addActionError("亲!您还没有登录,没有权限来访问!");return "loginFail";}else{//已经登录return actionInvocation.invoke();}}}
2、在struts.xml中配置拦截器
首先应该在配置文件中创建拦截器
<interceptors><interceptor name="PrivilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/></interceptors>
创建好之后给Action配置拦截器
<!--后台一级分类管理的Action--><action name="adminCategory_*" class="adminCategoryAction" method="{1}"><result name="findAll">/admin/category/list.jsp</result><result name="saveSuccess" type="redirectAction">adminCategory_findAll.action</result><result name="deleteSuccess" type="redirectAction">adminCategory_findAll.action</result><result name="editSuccess">/admin/category/edit.jsp</result><result name="updateSuccess" type="redirectAction">adminCategory_findAll.action</result><interceptor-ref name="PrivilegeInterceptor"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></action>
然后拦截器就可以执行了。
总结
1、拦截器只对Action进行处理,对其余的不进行处理。
2、拦截器可以读取值栈中的东西,就像登录验证时,拦截器可以读取Session的内容。
3、拦截器一次创建可以多次被调用,只要是使用拦截器的Action,Action执行几次,拦截器就同样执行几次。
- SSH学习——Struts2拦截器实现登录权限验证
- struts2 拦截器 登录权限验证
- Struts2学习(九)—拦截器之登录权限
- Java学习笔记 Struts2拦截器实现权限登录
- Struts2 拦截器 实现登录权限
- Struts2拦截器—自定义拦截器验证用户登录
- Struts2拦截器 实现未登录拦截和权限控制
- Struts2拦截器 实现未登录拦截和权限控制
- Struts2—拦截器实现权限控制
- ssh学习:struts2的拦截器实现
- SSH与SSM学习之SSH实现CRM练习16——登录校验拦截器
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证 .
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- innodb_max_dirty_pages_pct与检查点的关系
- android中对View的onMeasure()方法的理解
- HDU1495 非常可乐
- leetcode系列(75)Delete Node in a Linked List
- android学习记录3(数据存储的方式:sqlite、sp、存文件。listview简单使用)
- SSH学习——Struts2拦截器实现登录权限验证
- deep learning tutorial 翻译 (theano学习指南2(翻译)-对数回归分类器 )
- 图的顶点与边之间的关系
- NSData+Base64
- Retrofit
- leetcode系列(76)Remove Linked List Elements
- 逐梦C++之二:输入与输出
- HDOJ 5615 Jam's math problem (数学题枚举)
- (二)colletions模块总结,跳出3重循环代码总结,替换文件中某一字段代码总结