权限拦截器如下:
/**
* 权限拦截器
* 拦截非登录用户
* @author Administrator
*
*/
public class AuthorInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation arg0) throws Exception {
//如果是登录请求则直接放行
Object o = arg0.getAction();
System.out.println(o.getClass());
if(o instanceof LoginAction){
return arg0.invoke();
}
//拦截非登录用户
//获取Session
Map session = arg0.getInvocationContext().getSession();
//判断用户是否已登录
Users u = (Users)session.get("user");
if(u==null){
//未登录用户,将被拦截到登录页面
System.out.println("非法请求已被拦截,系统将跳转到登录页面!!!!!!!");
return "login";
}else{
//放行
return arg0.invoke();
}
}
}
配置如下:
<struts>
<!-- 配置编码(防止中文乱码) -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="default" extends="struts-default" namespace="/">
<!-- 拦截器定义 -->
<interceptors>
<!--注册自定义的拦截器 -->
<interceptor name="auth" class="com.hr.interceptor.AuthorInterceptor"></interceptor>
<!-- 自定义拦截器栈 -->
<interceptor-stack name="myStack">
<!-- 自定义拦截器栈的第一个拦截器一定要配置成系统默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!-- 将自定义的拦截器加入到自定义的拦截器栈 -->
<interceptor-ref name="auth"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 将自定义拦截器栈设置为默认拦截器 -->
<default-interceptor-ref name="myStack"/>
<!-- 配置默认Action(当其他Action不能匹配的时候自动匹配此Action -->
<default-action-ref name="defaultAction"/>
<!-- 定义全局视图 -->
<global-results>
<result name="error">error.jsp</result>
<result name="404">/404.jsp</result>
<result name="login">/login.jsp</result>
</global-results>
<!-- 定义默认Action -->
<action name="defaultAction">
<!-- name属性默认值为 success -->
<result>/404.jsp</result>
</action>
<action name="login" class="com.action.LoginAction">
<result name="index">index.jsp</result>
</action>
<!-- 用户处理Action -->
<action name="user" class="com.action.UserAction">
<!-- 动态结果 -->
<result type="redirectAction">${nextPos}</result>
<result name="index">/index.jsp</result>
<result name="ok">/ok.jsp</result>
<!-- redirectAction类型用于Action之间的转发 -->
<result name="m" type="redirectAction">/manage!mt.action</result>
<result name="update_user">/user_update.jsp</result>
</action>
<!-- 管理Action -->
<action name="manage" class="com.action.ManageAction">
<result>/ok.jsp</result>
</action>
</package>
</struts>