拦截器最后一讲-使用拦截器完成权限控制

来源:互联网 发布:知乎法国婆婆 编辑:程序博客网 时间:2024/06/05 21:06

使用拦截器完成权限控制
本文将通过拦截器实现一个实用功能 -使用拦截器实现权限控制(简单的)
功能描述:当用户执行一个操作时,先检查用户是否已经登录,否则转到登录页面
检查用户登录,一般检查的是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>
1 0