当前位置: 首页 > news >正文

Struts2利用拦截器实现权限控制

权限控制,顾名思义就是对于某些页面或者操作需要满足一定的权限要求才能继续继续进行。比如说:后台管理需要管理员登录,用户密码修改等操作需要用户登录等等。在Struts2中,简单的权限控制可以通过配置拦截器即可。下面我以修改密码进行举例:

(1)定义拦截器CheckInterceptor.java用于验证用户是否登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package  com.zxpm.interceptor; import  java.util.Map; import  com.opensymphony.xwork2.ActionInvocation; import  com.opensymphony.xwork2.interceptor.Interceptor; import  com.zxpm.entity.Users; public  class  CheckInterceptor  implements  Interceptor {
     public  String intercept(ActionInvocation arg0)  throws  Exception {
         Map<String, Object> session = arg0.getInvocationContext().getSession();
         Users u = (Users) session.get( "user" );
         if (u !=  null )
             return  arg0.invoke();
         else 
             return  "login" ;
     }
     
     public  void  destroy() {
         // TODO Auto-generated method stub
 
     }
 
     public  void  init() {
         // TODO Auto-generated method stub
 
     }}

(2)配置struts.xml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
< package  name = "user"  namespace = "/user"  extends = "struts-default" >
         < interceptors >
             <!-- 声明拦截器 -->
             < interceptor  name = "loginInterceptor"  class = "com.zxpm.interceptor.CheckInterceptor"  />
             < interceptor  name = "errorInterceptor"  class = "com.zxpm.interceptor.ErrorInterceptor"  />
             <!-- 配置拦截器栈 -->
             < interceptor-stack  name = "myErrorInterceptor" >
                 < interceptor-ref  name = "defaultStack"  />    
                 < interceptor-ref  name = "errorInterceptor"  />
             </ interceptor-stack >
         </ interceptors >
         <!-- 覆盖底层的拦截器栈 对包中的所有action都有效 -->
         < default-interceptor-ref  name = "myErrorInterceptor"  />
         < global-results >
             < result  name = "errorMsg" >/error.jsp</ result >
         </ global-results >
         < global-exception-mappings >
             < exception-mapping  result = "errorMsg"  exception = "java.lang.Exception" ></ exception-mapping >
         </ global-exception-mappings >
         < action  name = "modifyPwd"  class = "user"  method = "modifyPassword" >
             < result  type = "redirect" >/index.jsp</ result >
             < result  name = "login"  type = "redirect" >/index.jsp</ result >
             < interceptor-ref  name = "loginInterceptor"  />
             < interceptor-ref  name = "defaultStack"  />
         </ action >
     </ package >

注:i)由于这里定义了关于异常的拦截器,因此代码显得稍多,实际上就是申明拦截器,然后在action中添加interceptor-ref即可;ii)我这个小项目因为登录操作在首页,因此直接就重定向到首页去了



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1741570,如需转载请自行联系原作者

相关文章:

  • kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结
  • Python回顾与整理4:序列1—字符串
  • python小代码之阶乘求和
  • ibatis动态生成列时的列名无效
  • 通过构造函数来创建新对象
  • Python字符串、列表、元组、集合、字典方法
  • 【MongoDB学习笔记32】MongoDB修改副本集配置
  • iptables防火墙 --Linux详解
  • CentOS 7.2 安装图解教程
  • MongoDB主从
  • Linux系统使用lvm扩展根分区
  • 【人工智能】 火爆的机器学习和人工智能,为何在金融业四处碰壁?
  • 定制你的敏捷方法:以结果为导向
  • Java并发编程(六)发布与逸出
  • linux 查看网卡流量的方法
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Angular6错误 Service: No provider for Renderer2
  • chrome扩展demo1-小时钟
  • Create React App 使用
  • eclipse的离线汉化
  • exports和module.exports
  • hadoop集群管理系统搭建规划说明
  • JavaScript 奇技淫巧
  • python 装饰器(一)
  • Rancher-k8s加速安装文档
  • spring boot下thymeleaf全局静态变量配置
  • text-decoration与color属性
  • vuex 笔记整理
  • Vultr 教程目录
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • ​业务双活的数据切换思路设计(下)
  • (1)(1.13) SiK无线电高级配置(五)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (笔试题)合法字符串
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (原)Matlab的svmtrain和svmclassify
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .pop ----remove 删除
  • ??javascript里的变量问题
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @Transaction注解失效的几种场景(附有示例代码)
  • [asp.net core]project.json(2)
  • [Bugku]密码???[writeup]
  • [C++]类和对象【上篇】
  • [HNOI2008]Cards
  • [HNOI2008]水平可见直线
  • [iOS]-UIKit
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用