攔截器最後一講-使用攔截器完成權限控制

使用攔截器完成權限控制
本文將通過攔截器實現一個實用功能 -使用攔截器實現權限控制(簡單的)
功能描述:當用戶執行一個操作時,先檢查用戶是否已經登錄,否則轉到登錄頁面
檢查用戶登錄,一般檢查的是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>
發佈了59 篇原創文章 · 獲贊 28 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章