2014-02-21 76 views
0

對於我正在開發的項目,我需要能夠在特定條件下基於IP地址對訪問者進行身份驗證。使用IP地址對用戶進行身份驗證

我一直在做的方式是通過比較訪問者的IP地址和我的數據庫中的表。如果IP檢出,我從數據庫中獲取相關用戶並以有限的訪問權限登錄。

但我一直在使用global.asax中的Session_start()方法並創建一個會話變量來指定用戶是否通過IP登錄。然後,如果用戶通過IP登錄,則會限制某些功能。

然而,這並沒有得到足夠好的工作,主要是因爲當用戶第一次訪問該網站時,我想讓他知道他已經通過他的IP地址登錄,但會話開始似乎在視圖後被解僱已被渲染,因此直到訪問者刷新頁面或訪問子頁面時才顯示該消息。只是有一個會話變量也似乎不夠安全(儘管我承認我沒有正確研究過)。

從來就試着做了檢查,並自動登錄中的Application_BeginRequest()方法,但認證管理器未初始化,在早期的要求,所以我不能登錄的用戶。

任何人那可以指向我正確的方向?完成這個最好的方法是什麼?

+1

通過IP地址進行身份驗證是一種嚴重不良的做事方​​式。 IP地址可能被共享或更改,很少反映使用它的機器的身份,更不用說用戶。 – 2014-02-21 02:16:17

+0

我知道IP認證的問題。但由於項目的性質,限制條件是可以接受的。這也將限於某​​些用戶。 – grimurd

回答

1

您可以使用和擴展AuthorizeAttribute並覆蓋OnAuthorization,以便您可以將檢查放在那裏。

+0

如果這樣做,我不需要將授權屬性放在每個控制器上? – grimurd

+0

您可以將它作爲GlobalFilters.Filters.Add(新的MyAuthorizeAttribute())添加到GlobalFilters中,或者擁有一個基礎控制器。 – drunkcoder

+0

這個建議像魅力一樣工作,謝謝。 – grimurd

相關問題