当前位置 : 主页 > 网络编程 > 其它编程 >

使用struts2自定义拦截实现统一的身份验证模式

来源:互联网 收集:自由互联 发布时间:2023-07-02
最近在项目开发中需要进行身份的统一认证之前.NET的思想就是通过父页面基类进行控制现在使用struts2进行开发的话 最近在项目开发中需要进行身份的统一认证之前.NET的思想就是通过父
最近在项目开发中需要进行身份的统一认证之前.NET的思想就是通过父页面基类进行控制现在使用struts2进行开发的话

最近在项目开发中需要进行身份的统一认证之前.NET的思想就是通过父页面基类进行控制现在使用struts2进行开发的话当然还是使用拦截器比较方便而且比较省事网上提供了很多实现的例子但是都觉得对于新手而言都有一点不清楚如何使用起来。现在我把我的整个实现方式分享出来。

首先我的项目使用的是springstruts2mybatis数据库端使用的pgsql 现在的需求是我们需要在用户登录后将用户信息存储在session中在后续的操作中需要在每次请求中都判断session是否失效失效后就提示过期重新登录。

本次就使用拦截器来实现首先我们为验证建立一个包取名com.tc.auth在包下建立action包和资源文件 source.struts文件结构大概如下图所示

接着我们来编写AuthInterceptor.java文件的code 吧

package com.tc.auth.action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;import com.tc.blacktea.common.TCSysConst;import com.tc.blacktea.util.SessionUtil;public class AuthInterceptor implements Interceptor {private static final long serialVersionUID 5582842221490358379L;public void destroy() {}/*** 在服务启动的时候执行*/public void init() {}public String intercept(ActionInvocation actionInvocation) throws Exception {System.out.println("<<<用户认证检测拦截器初始化...");// sessionUser 如果session中不存在用户在返回index视图if (SessionUtil.GetSession("USER_SESSION_KEY") null) {//这里我使用了自己写的session封装类return "autherror";}String result actionInvocation.invoke();//这里是继续原先请求的invoke不进行其他操作。return result;}}

接着我们来看下拦截器的配置是如何编写的

/jsp/index.jsp/jsp/index.jsp/jsp/Error.jsp上面的code需要注意几点

1、package包的namespace如果是”/“的话就表示是全局的一个拦截器你在struts的配置文件中任意位置都可以调用。

2、interceptors/interceptor的class属性是刚刚上面写的action的类访问路径。

3、interceptors/interceptor-stack的默认拦截器defaultStack必须写在最后面否则失效。

4、default-interceptor-ref 是定义所有的action都默认先执行为name属性的拦截器名称完了再执行请求上下文的拦截器。

这几个的联系看下图

现在拦截器都定义好了后我们接下来就是使用

首先我们在user的包下的struts-user.xml文件写了如下的xml配置信息

/jsp/Error.jsp/jsp/user/userlist.jsp/jsp/user/userinfo.jsp 1、注意package报的extends属性必须继承我们自定义的拦截器的package的名称

2、在我们的action中添加interceptor-ref节点name属性指定我们的拦截器名称即可。

这样配置完了后我们就可以在任何需要进行身份验证的action中进行如上的配置就可以实现信息的验证和过滤操作。只要会用了这些类似的原理后我们就可以进行如身份验证、数据过滤、访问统计、页面PR等都是可以通过这种类似的手法达到效果好了不多说了赶快动手试试吧

转载请注明 http://blog.csdn.net/qq415734794/article/details/7710585

上一篇:金典SQL笔记(4)
下一篇:没有了
网友评论