您的位置:首页 > 编程语言 > Java开发

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中,并且设置默认的拦截器就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: