Struts2拦截器权限验证(源码)!

简介:

 长话短说,抛砖引玉,举个很简单的例子,通过Session,验证用户是否已登陆。

环境:MyEclipse6.5+Mysql5+struts2.0.11.2

源码:拦截器类:

AuthInterceptor.java

 

Code

 

 

验证用户登陆后的Action类,负责向Session中插入值。

AdminAction.java

 

复制代码
package  com.sy.action;

import  java.util.List;
import  java.util.Map;

import  com.opensymphony.xwork2.ActionContext;
import  com.opensymphony.xwork2.ActionSupport;
import  com.sy.dao.AdminDao;
import  com.sy.dao.NewsDao;
import  com.sy.dao.impl.AdminDaoImpl;
import  com.sy.dao.impl.NewsDaoImpl;
import  com.sy.vo.Admin;
import  com.sy.vo.News;

public   class  AdminAction  extends  ActionSupport {

    
private   static   final   long  serialVersionUID  =   - 3699334709726488611L ;
    
int  i = 1 ; // 中间变量
     private   int  k; // 储存最大页面数
     private   int  pageNow = 1 // 页码数,初始为1
     private   int  pageSize  =   8  ;  // 页面行数 
     private   int  intRowCount; // 总行数
     private   int  intPageCount; // 总页数
     private  List < News >  Newss;
    
private  Admin admin;
    
public  List < News >  getNewss() {
        
return  Newss;
    }
    
public   void  setNewss(List < News >  newss) {
        Newss 
=  newss;
    }
    
public  Admin getAdmin() {
        
return  admin;
    }
    
public   void  setAdmin(Admin admin) {
        
this .admin  =  admin;
    }
    
public   int  getPageNow() {
        
return  pageNow;
    }
    
public   void  setPageNow( int  pageNow) {
        
this .pageNow  =  pageNow;
    }
    
public   int  getPageSize() {
        
return  pageSize;
    }
    
public   void  setPageSize( int  pageSize) {
        
this .pageSize  =  pageSize;
    }
    
public   int  getK() {
        
return  k;
    }
    
public   void  setK( int  k) {
        
this .k  =  k;
    }
    
public   int  getIntRowCount() {
        
return  intRowCount;
    }
    
public   void  setIntRowCount( int  intRowCount) {
        
this .intRowCount  =  intRowCount;
    }
    
public   int  getIntPageCount() {
        
return  intPageCount;
    }
    
public   void  setIntPageCount( int  intPageCount) {
        
this .intPageCount  =  intPageCount;
    }
    @SuppressWarnings(
" unchecked " )
    
public  String execute()  throws  Exception {
        
        AdminDao adi
= new  AdminDaoImpl();
        admin.getAname();
        admin.getApassword();
        
if (adi.isLogin(admin)){
            
            Map map
= ActionContext.getContext().getSession(); // 插入Session的值
            map.put( " user " , admin.getAname());
            
            NewsDao npage
= new  NewsDaoImpl();
            intRowCount
= npage.count();
            k
= (intRowCount  +  pageSize  -   1 /  pageSize;
            intPageCount 
=  (intRowCount  +  pageSize  -   1 /  pageSize; // 计算出总页数
             if (pageNow < 1 ){
                pageNow
= 1 ;
            }
            
            
if (pageNow  >  intPageCount)
                 pageNow
= intPageCount;
                 i 
=  (pageNow  - 1 ) * pageSize;
            NewsDao nlist
= new  NewsDaoImpl();
            
if ( null != nlist.queryByPage(i,pageSize)){
            Newss 
=  nlist.queryByPage(i,pageSize);
            
            
return  SUCCESS;
            }
else {
                
return   " failure " ;
            }
                }
else
                    
return   " failure " ;
        }
    }
复制代码

 

 struts.xml

 

复制代码
<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
<! DOCTYPE struts PUBLIC 
    
" -//Apache Software Foundation//DTD Struts Configuration 2.0//EN "  
    
" http://struts.apache.org/dtds/struts-2.0.dtd " >
< struts >
    
< package  name = " News "   extends = " struts-default " >

    
< interceptors >

    
< interceptor - stack name = " myStack " >
                
< interceptor - ref name = " defaultStack " ></ interceptor - ref >
                
< interceptor - ref name = " auth " ></ interceptor - ref >
    
</ interceptor - stack >
    
    
< interceptor name = " auth "   class = " com.sy.interceptor.AuthInterceptor " />
    
</ interceptors >

    
< global - results >
        
< result name = " login "  type = " redirect " >/ admin / login.jsp </ result >
    
</ global - results >
<!--  验证管理员登陆  -->
        
< action name = " login "   class = " com.sy.action.AdminAction " >
            
< result name = " failure " >/ admin / failure.jsp </ result >
            
< result >/ admin / ManageNews.jsp </ result >
            
< result name = " input " >/ admin / login.jsp </ result >
        
</ action >
<!--  管理员列表  -->         
        
< action name = " alist "   class = " com.sy.action.ListAction "  method = " adminList " >
            
< result >/ admin / deleteManager.jsp </ result >
            
< result name = " failure " >/ admin / Showfailure.jsp </ result >
            
< interceptor - ref name = " myStack " ></ interceptor - ref >
        
</ action >
    
</ package >
</ struts >
复制代码

 

 配置完成!!!


本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/10/24/1318673.html,如需转载请自行联系原作者

相关文章
|
Java
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)2
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截
230 0
|
存储 JSON 算法
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)1
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截
371 0
SpringMVC自定义注解验证登陆拦截
这里业务场景需要,所有的请求都需要登录验证。个别通用业务不需要登录拦截。注解方式替代原有的if判断。
125 0
SpringMVC自定义注解验证登陆拦截
|
存储 前端开发 Java
Java Web实战 | 拦截器案例:用户登录权限验证
在配置文件中如果只定义了一个拦截器,程序首先执行拦截器类中的preHandle()方法。如果preHandle()方法返回false,则中断后续所有代码的执行。如果该方法返回true,程序将继续执行处理器以处理请求。当处理器执行过程中没有出现异常时,会执行拦截器中的postHandle()方法。postHandle()方法执行后会通过相关资源向客户端返回响应,并执行拦截器的afterCompletion()方法;如果处理器执行过程中出现异常,将跳过拦截器中的postHandle()方法,直接由前端控制器渲染异常页面返回响应,最后执行拦截器中的afterCompletion()方法。
292 0
|
Java 数据安全/隐私保护 容器
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)下
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)
172 0
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)下
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)上
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)
160 0
Struts2拦截器的简单应用,登录权限拦截器及与过滤器的区别(八)上
shiro加入拦截器注意事项
shiro加入拦截器注意事项
133 0
shiro加入拦截器注意事项
|
安全 Java 程序员
项目中的shiro版本从1.6.0改为1.8.0之后,拦截器不生效?
由于前段时间,我们的服务器被阿里云检测到现在使用的shiro版本有漏洞,项目经理让提高版本。遂把shiro的版本改为了1.8.0,改完之后,竟然发现,项目中配置的登录拦截路径不生效了,任何请求都可以通过。我一度以为这是shiro 1.8版本的一个漏洞。但是作为程序员的我,需要找到到底是什么原因,哪里他们哪里出现了bug(说不定还可以给官方提供建议,手动狗头)。于是,我开始研究shiro底层代码。
973 0
|
前端开发 Java Spring
springMVC使用拦截器检查用户登录
参考文章 编写拦截器类 package cultivate_web.interceptor; import javax.servlet.http.HttpServletRequest; import javax.
1257 0
|
XML 数据格式