2012-06-06 31 views
1

我必須構建一個顯示一些數據的Web應用程序。我將有兩種用戶:註冊用戶和匿名用戶。註冊用戶將從公司內部網運行應用程序,匿名用戶將從互聯網上運行應用程序。註冊用戶將看到比匿名用戶更多的數據。用匿名登錄表單進行身份驗證的最佳方法

我需要一個登錄表單寄存器用戶(知道誰是看到數據),但是當匿名用戶使用該應用程序,登錄表單必須沒有顯示。

在同一個Web應用程序中,第一個屏幕必須是登錄表單,但在某些情況下,登錄表單不能出現。什麼是最好的方式來做到這一點?

我正在使用Vaadin(基於GWT的Java框架)來開發我的應用程序。我認爲這樣做的好方法是檢查瀏覽器網址,但我不確定是否是最好的方法。

回答

2

正如McOmghall所說。

WebBrowser b = (WebBrowser) getMainWindow().getTerminal(). 
String ip = b.getAddress(); 

或(在你的應用程序類):你可以通過調用獲取用戶的IP

WebBrowser b = ((WebApplicationContext) getContext()).getBrowser(); 
String ip = b.getAddress(); 

然後你可以使用Jakara共享網絡,以檢查IP地址處於子網您公司(例如192.168.0.0/24):

SubnetInfo subnet = (new SubnetUtils("192.168.0.0", "255.255.255.0")).getInfo(); 
boolean test = subnet.isInRange(ip); 

這裏的another cool solution,不需要使用任何第三方庫的。

Source 1

Source 2

0

如果您在Extranet和Intranet之間有區別,您應該通過IP檢查連接的來源。 Java提供了一種方法來做到這一點,但我不知道Vaadin是否可能。