Struts2非常简单实用的身份验证功能
2015-06-24 11:09
441 查看
在做网站的时候经常碰到的问题就是身份验证的功能,最蠢的方法就是在每个动作前进行身份验证的动作。。。struts2自带非常方便的“动作执行前的动作设置“功能(这样讲貌似比较容易懂?)。。。简单来说就是在执行struts.xml的某个package下配置的action动作之前,都会先执行我们为这个package预设的动作。看看代码就非常简洁易懂了~
首先是Struts.xml
<package name="admin" extends="struts-default">
<interceptors>
<!-- 定义了一个名为authority的拦截器,注意拦截器的class -->
<interceptor name="authenticationInterceptor" class="interceptor.AdminAuthInterceptor" />
<interceptor-stack name="defualtSecurityStackWithAuthentication">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authenticationInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defualtSecurityStackWithAuthentication" />
<!-- 全局Result,让验证不通过的都跳到该result -->
<global-results>
<result name="tologin">/WEB-INF/jsp/login.jsp</result>
</global-results>
然后就是写拦截器啦~
根据上述拦截器的class路径,我们可以新建这样的一个包和类
然后这个类的内容如下:
package interceptor;
import com.dao.Commonaction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AdminAuthInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -5114658085937727056L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
//执行验证动作
if (验证成功) {
return invocation.invoke();
}
return "tologin";
}
}
非常简洁易懂又方便使用~这样我们只需为不同的身份可以执行的动作分别丢在struts下不同的package中,并且设置默认的拦截器就可以了
首先是Struts.xml
<package name="admin" extends="struts-default">
<interceptors>
<!-- 定义了一个名为authority的拦截器,注意拦截器的class -->
<interceptor name="authenticationInterceptor" class="interceptor.AdminAuthInterceptor" />
<interceptor-stack name="defualtSecurityStackWithAuthentication">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authenticationInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defualtSecurityStackWithAuthentication" />
<!-- 全局Result,让验证不通过的都跳到该result -->
<global-results>
<result name="tologin">/WEB-INF/jsp/login.jsp</result>
</global-results>
然后就是写拦截器啦~
根据上述拦截器的class路径,我们可以新建这样的一个包和类
然后这个类的内容如下:
package interceptor;
import com.dao.Commonaction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AdminAuthInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -5114658085937727056L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
//执行验证动作
if (验证成功) {
return invocation.invoke();
}
return "tologin";
}
}
非常简洁易懂又方便使用~这样我们只需为不同的身份可以执行的动作分别丢在struts下不同的package中,并且设置默认的拦截器就可以了
相关文章推荐
- Struts中ModelDriven的使用
- LeetCode_45---Jump Game II
- spring读取资源文件
- java通过jdbc连接sql server 2008
- 调用Java API发送传真
- Java设计模式透析之 —— 单例(Singleton)
- 简易Java(06):图解Java字符串的不可变性
- JavaBean
- Mybatis整合Spring
- 关于eclipse中的一些配置文件.project 和 .classpath文件以及.settings文件
- Spring事务管理1
- Dom4j错误:java.lang.NoClassDefFoundError: org/jaxen/JaxenException
- Java类中的初始化顺序
- java贪吃蛇游戏二
- javaweb项目中中文乱码
- 8个超实用的Java测试工具和框架
- 分布式事物的spring的实现
- 10条改善Java性能的小建议:
- spring的IOC、AOP的使用场景
- 如何从Eclipse导入github上的项目源码