攔截驗證每一個請求的權限
阿新 • • 發佈:2018-02-06
home 默認 配置 用戶 。。 led 鏈接 每一個 ets
2.實現攔截器類
這裏另一點問題就是 ?對首頁的訪問 ?home_index.action 以及註銷的action 等訪問也被攔截了,比方張三登錄了。本應該跳到首頁,但這個action實現沒被安裝到(初始化的)權限表中,所以會直接跳到無權訪問的錯誤頁面。
前面做的盡管在界面內看不見沒有權限的鏈接 但能夠直接在地址欄輸入鏈接進行訪問。所以我們這裏要使用攔截器攔截每一個訪問action的請求
? ? 1.struts配置
??
<package name="default" namespace="/" extends="struts-default"> <!-- 聲明攔截器 --> <interceptors > <interceptor name="CheckPrivilege" class="cn.itcast.oa.Utils.CheckPrivilegeInterceptor"></interceptor> <!-- 定義攔截器棧 --> <interceptor-stack name="MyStack"> <interceptor-ref name="CheckPrivilege"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 定義默認攔截器棧 --> <default-interceptor-ref name="MyStack"></default-interceptor-ref> <!-- 配置全局 result --> <global-results> <result name="loginUI">/WEB-INF/jsp/userAction/loginUI.jsp</result> <result name="noPrivilegeError">/noPrivilegeError.jsp</result> </global-results>
public class CheckPrivilegeInterceptor implements Interceptor { public String intercept(ActionInvocation invocation) throws Exception { /* * System.out.println("攔截之前 "); String result = invocation.invoke(); * System.out.println("攔截之後 "); */ // 獲取信息 當前登錄用戶 要訪問的 權限 User user = (User) ActionContext.getContext().getSession().get("user"); // *************************************** String nameSpace = invocation.getProxy().getNamespace(); String ActionNanme = invocation.getProxy().getActionName(); String privUrl = nameSpace + ActionNanme;// 相應的權限Url // 1.是否等錄 未登錄就轉到登錄界面 if (user == null) { if (/* 準備去登錄 ,就放行 /user_loginUI /user_login */privUrl .startsWith("/user_login")) { return invocation.invoke(); } else return "loginUI"; } // 登若錄 是否有權限 else { // 有權限 放行 if (user.hasPrivilegeByUrl(privUrl)) { return invocation.invoke(); } // 無權限 轉到提示界面 else { return "noPrivilegeError"; } } } public void destroy() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } }
這裏另一點問題就是 ?對首頁的訪問 ?home_index.action 以及註銷的action 等訪問也被攔截了,比方張三登錄了。本應該跳到首頁,但這個action實現沒被安裝到(初始化的)權限表中,所以會直接跳到無權訪問的錯誤頁面。
。。
。
。下一篇我們在探討怎麽把這些主要的權限 賦予每一個人。
攔截驗證每一個請求的權限