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,如需转载请自行联系原作者

相关文章
Struts2的拦截器
Struts2的拦截器
45 0
|
前端开发 Java 数据安全/隐私保护
SpringMVC拦截器实现登录权限控制
SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于 web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个 controller生命周期之内可以多次调用。
|
数据安全/隐私保护
自定义注解+拦截器实现权限控制
今天刚学习了通过自定义注解+拦截器实现权限控制,自己花了点时间整理,发到网站同网友交流分享。
190 0
自定义注解+拦截器实现权限控制
|
Java
Struts2【拦截器】(一)
Struts2【拦截器】
180 0
Struts2【拦截器】(一)
|
小程序 Java
Struts2【拦截器】(三)
Struts2【拦截器】
197 0
Struts2【拦截器】(三)
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)上
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)
166 0
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)上
|
Java 数据安全/隐私保护 容器
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)下
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)
180 0
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)下
|
Java 容器 应用服务中间件
12 Struts2 拦截器
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxdeng/article/details/81941425 拦截器 拦截器在概念上和Servlet过滤器或JDK代理类一样。
1286 0