如何確定用戶是否從互聯網或內部網訪問我的應用程序?乾淨的方式來識別來自內部網或互聯網的用戶
我很關心IIS服務器變量的來源和安全性。例如, http://msdn.microsoft.com/en-us/library/ms524602.aspx 對於遠程用戶是否爲Request.ServerVariables [「AUTH_USER」]爲空?
此外,在http://msdn.microsoft.com/en-us/library/system.environment.userdomainname.aspx 上Environment.UserDomainName的文檔讓我覺得這是可以通過命名計算機名稱等於我檢查
理想的域名到遊戲這個,我只是想...
if ([ ... user is not remote ... ] && Enironment.UserDomainName == "TargetLocalDomainName")
var username = Environment.UserName;
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]
所以我的問題是我如何確定用戶是否從遠程目標?如果可能的話,我寧願使用比IP檢查更少雜亂的東西。
感謝
編輯
我以爲我上面的方法是太可怕了,我想發佈一個理智的方式
var hostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
bool localUser = hostAddress.StartsWith("192.") | hostAddress.StartsWith("10.") | hostAddress.StartsWith("172.") || HttpRequest.Current.Request.IsLocal;
string username = Request.ServerVariables["LOGON_USER"].split(new char[]{"/"})[0];
string domain = Request.ServerVariables["LOGON_USER"].split(new char[]{"/"})[1];
if(localUser && domain == "TargetLocalDomainName"){
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]
注意自己:如果使用IP方法,也允許本地調試請求,以及=>'HttpRequest.Current.Request.IsLocal | ' – user1778606