天天看點

Spring MVC中的 權限攔截定義 以及 權限攔截的研發步驟

權限攔截 (攔截器: 對請求進行區分)

1 實作的價值(作用)

使用者未登入:通路沒用登入的URL,攔截到以後 跳轉回登入

使用者未登入:通路登入的URL,直接放行到後續流程處理架構,進行後續的操作

使用者登入: 通路擁有的權限 跳轉頁面并渲染

使用者登入: 通路沒有的權限 跳轉到沒有權限的錯誤頁面

權限攔截的研發步驟

1 實作HandlerInterceptor接口 有一個PreHandle方法

擷取Session中使用者 在擷取Request url

判定Session 和null 的關系

為空的情況沒有登陸時 跳轉到登陸頁面

在大配置中如果通路的是登陸url 不做攔截 使用的是Exclude 屬性。

不為空的情況 登陸後 分情況讨論放行

通路 hasUrl:放行并渲染

通路 hasNotURL : 攔截跳轉到 NoPermission 頁面

2 使用者登陸以後 通路 hasNotURL : 攔截跳轉到 NoPermission 頁面

if(hasPrivilegeByurl(url入參)){

retuen true;

}

3 UserInfo中

Public boolean hasOrivilegeByUrl(url入參){

// get all Permission from listener‘s area

List<String>list =null; ---Conver End

if(!list.contains(url)){

return true;// 他不能攔截本身預設擁有的權限 ,這些權限并沒有顯示在DB中進行存儲

}

//擷取到CurrentLoginUserPrivilege集合

疊代判定 有 :retuen true;

}

4 配置監聽器 全局的監聽器 SerbletContextListener

在容器啟動的時候 去給application 放入系統所有權限

5 web.xml 中 配置監聽器

配置法則 :spring 的監聽器一定配置在第一位。