在struts.xml中添加如下配置:
<!-- 配置全局拦截器 -->
<package name="all" extends="struts-default"><interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="authority"
class="akai.cost.ms.base.AuthInterceptor" />
<!-- 定义一个包含权限控制的拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" />
<!-- 定义全局处理结果 -->
<global-results>
<!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
<result name="login">/login.jsp</result>
</global-results>
</package>
使用方法:其他包继承这个包名就可以了
<package name="abc" extends="all" namespace="/">
附:拦截器类
package akai.cost.ms.base;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
String userName = (String)session.getAttribute("System_UserName");
if(userName == "" || userName == null){//错误,回到登录界面
return Action.LOGIN;
}else{
return invocation.invoke();
}
}
}
本文介绍如何在Struts2框架中配置全局拦截器实现权限控制。通过定义自定义拦截器和拦截器栈,确保只有认证用户才能访问受保护资源。未通过验证的用户将被重定向到登录页面。
217

被折叠的 条评论
为什么被折叠?



