ApiController的過濾器使用

2021-07-05 09:25:03 字數 3235 閱讀 1453

}2.>>>>>>>>>>>>>>>>>>>>>>>>>>過濾器》

\",\"message\":\"\",\"userinfo\":}}", puserid, "賬號密碼不正確!", "");

//除錯使用

}//伺服器端獲取請求使用者的ip

//::1就是ip位址,估計你是win7或 vista的系統 或安裝了ipv6,這是ipv6的本地回環位址就是ipv4中的127.0.0.1

else//使用**伺服器

return _userip;}}

//下面,我們來著重討論如何實現惡意重新整理的過濾器。

//因為我們的需求是在任何的10秒中記錄請求數而不是在以10秒為乙個時間段,那麼就需要保證時間的連續性,

//鑑於此需求,我們需要儲存使用者連續10次請求的時間,如果其最後一次的請求時間與第一次的時間差小於10秒並且次數已經達到10次,則違背設定規則,

//我們設計了下面的類來儲存使用者的訪問時間序列。

public class arraytime

public void init()

public int getlength()

public void setlength(int len)

public long getlast()

public long getfirst()

public long getelement(int i)

public void insert(long nexttime)

this.time[length - 1] = nexttime;

}else

time[j] = nexttime;}}

}//這裡要注意的是,因為我們為管理員提供了規則設定的介面,所以儲存時間序列的陣列長度是可設定的。下面是來自客戶端的訪問者類的實現:

public class visitor

public void setuserip(string userip)

public string getuserip()

public void setrequesttimequeue(arraytime requesttimequeue)

public arraytime getrequesttimequeue()

}//最後,也是最關鍵的就是我們如何來通過過濾器實現對惡意使用者的請求進行遮蔽。下面是該過濾器的dofliter()方法的核心部分的實現。

//---------------防止惡意重新整理的過濾器--------

//string sessionid = ((httpservletrequest)request).getsession().getid();//會話id

//date now =new date();

//visitor vis = (visitor) visitors.get(sessionid);//通過sessionid查詢訪問者,

//if(vis!= null)//找到訪問者,則說明該使用者為再次訪問

//...catch(exception e) ...finally...

//}//} else ...

}3..>>>>>>>>>>>>>>>>>>>>>>>>>>單元測試》

時間過的真快!

7天的假期轉眼就過去了!其實,7天的假日也沒有出去玩,只是到幾個朋友家裡去坐坐!5號就到圖書館看書了,沒有辦法月底要考試,想想這一年多了,還沒有真正的靜下來好好的 看看書,有種陌生的感覺!沒有想到靜下來看書也不是一件容易的事,感覺非常的困,一會 要打幾個哈欠!不過總的來說,看書的時間還是多點!只是效...

過沙漠的問題

這是去哪兒的一道筆試題 乙個人穿過沙漠需要步行80公里,每步行一公里需要消耗1公升的水,但是每個人最多能帶60公升水,問這個人應該怎樣通過沙漠?要是步行81公里需要多少水?就是在20公里處要保證有60公升水才行,先帶60公升水在20公里處放下20公升水。然後回去帶60公升水在20公里處消耗了20公升...

時間過的好快

今天開啟自己的csdn部落格,不停的瀏覽著,看看部落格,看是發布時間,距離自己上次發布原創已經兩年半了 突然感慨時間過的好快,兩年半前自己剛剛結婚,生活方面還不夠成熟,工作方面還處於不停學習新知識的階段,兩年半 時間好快,自己經歷了太多的東西,方方面面的,回想起來感慨萬千。部落格,這個東西,現在想想...