使用拦截器完成权限控制
本文将通过拦截器实现一个实用功能 -使用拦截器实现权限控制(简单的)
功能描述:当用户执行一个操作时,先检查用户是否已经登录,否则转到登录页面
检查用户登录,一般检查的是session中是否有该用户的登录信息,
代码如下:
public class Author extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
//取得相应的实例,假设用户在登陆后,以user存在session中
// 1:String user= (String) ServletActionContext.getRequest().getSession().getAttribute("user");
//第二种方法取得
ActionContext ctx = invocation.getInvocationContext();
String user = (String) ctx.getSession().get("user");
if(null != user && "zhangsan".equals(user))
return invocation.invoke();//执行action中的方法
//没有登陆,将服务器提示设置成一个HttpServletRequest属性
ctx.put("tips", "请登录!!");
return "login";
}
}
struts.xml中的部分代码:
<package>
<interceptors>
<interceptor name="myLoginInterceptor" class="pageInterCeptor.Author"/>
</interceptors>
<action>
<result name="success">/success.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="myLoginInterceptor"/>
</action>
</package>
当然也可以配置成一个拦截器栈,方便使用:
package>
<interceptors>
<interceptor name="myLoginInterceptor" class=pageInterCeptor.Author">
<!-- 顶一个一个包括默认拦截器以及权限检查的拦截器-->
<interceptor-ref name="default-stack"/>
<interceptor-ref name="myLoginInterceptor"/>
</interceptors>
</package>