一种清晰的方法来识别用户是来自Intranet还是Internet

猴屋

如何确定用户是从Internet还是Intranet访问我的应用程序?

我对IIS服务器变量的来源和安全性感到非常困惑。例如,http://msdn.microsoft.com/zh-cn/library/ms524602.aspx,对于远程用户,Request.ServerVariables [“ AUTH_USER”]是否为空白?

另外,http://msdn.microsoft.com/zh-cn/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 ...]
科里

首先,您不能使用Environment该类来获取有关向服务器发出请求的用户的信息。Environment访问本地计算机的环境,因此您将始终获得服务器的详细信息。没有什么可以告诉您有关客户的事情。

服务器可用的所有客户端信息都将在Request对象中。如果您在网站上使用身份验证,则可以使用户登录,然后例如检查用户的安全详细信息System.Web.HttpContext.Current.Request.LogonUserIdentity

但是,这仍然不会告诉您客户端实际在哪里。测试用户的登录域只会告诉您用户是否已针对该域进行身份验证,而不是客户端是否在您的本地网络上。如果您的网站可以从网络外部访问(例如,使用NAT或服务器上的公共+私有地址混合访问),则您仍然必须检查请求中的IP地址,以确保其位于本地网络中。

因此,简短的答案是,如果不根据已知的内部网络范围检查IP地址,就无法执行此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中,什么是一种清晰有效的方法来计算区域中的事物?

来自分类Dev

多种方法来识别用户/ mysql,pdo,php

来自分类Dev

有没有一种简单的方法来限制用户带宽的使用?

来自分类Dev

一种可重用的方法来获取Python中当前用户定义包的目录?

来自分类Dev

有没有一种简单的方法来限制用户带宽的使用?

来自分类Dev

需要一种新方法来按r中的指定间隔识别连续观测

来自分类Dev

我需要一种优雅的方法来标准化标量(一种)

来自分类Dev

有没有一种正确的方法来在文本中突出显示#标签和@用户?

来自分类Dev

有没有一种标准的方法来获取SAP用户的先前登录日期?

来自分类Dev

有没有一种用户级的简单方法来强制终止sshfs连接?

来自分类Dev

寻求一种简单的方法来订购我的 dfs 来连接它们

来自分类Dev

在Oracle 8上的Sentence Case中是否有一种简单的方法来转换字符串?还是应该使用正则表达式?

来自分类Dev

有没有一种javascript方法来告诉我们输入范围滑块值是上升还是下降?

来自分类Dev

有没有一种好的方法来识别字符串中是否包含日期信息

来自分类Dev

是否有一种正确的方法来对Laravel中的一种形式的不同部分实施部分验证

来自分类Dev

寻找一种干净的方法来从一组节点中查找关系

来自分类Dev

实现一种方法来设置一些TextView属性

来自分类Dev

django-allauth是否提供一种简单的电子邮件/密码方法来代替django的用户名/密码方法

来自分类Dev

如何编写一种方法而不是多种方法来获取用户输入并将值分配给正确的变量?

来自分类Dev

寻找一种更强大的方法来自动调整内容到视口的大小

来自分类Dev

一种高效的方法来生成所有可能的方法来配对数据集中的项目

来自分类Dev

创建一种方法来停止JTable中出现的许多重复值

来自分类Dev

有没有一种快速的方法来打开命令窗口

来自分类Dev

ggplot2是否有一种简单的方法来包装注释文本?

来自分类Dev

是否有一种更简单的方法来遍历Laravel中的对象属性列表

来自分类Dev

Java Spring有一种扩展@Scheduled的方法来读取文件

来自分类Dev

泽西岛:有一种干净的方法来指定允许的URL扩展吗?

来自分类Dev

需要一种更好的方法来遍历表单控件

来自分类Dev

关系更改时,有没有一种很好的方法来更新NSManagedObject?

Related 相关文章

  1. 1

    在Python中,什么是一种清晰有效的方法来计算区域中的事物?

  2. 2

    多种方法来识别用户/ mysql,pdo,php

  3. 3

    有没有一种简单的方法来限制用户带宽的使用?

  4. 4

    一种可重用的方法来获取Python中当前用户定义包的目录?

  5. 5

    有没有一种简单的方法来限制用户带宽的使用?

  6. 6

    需要一种新方法来按r中的指定间隔识别连续观测

  7. 7

    我需要一种优雅的方法来标准化标量(一种)

  8. 8

    有没有一种正确的方法来在文本中突出显示#标签和@用户?

  9. 9

    有没有一种标准的方法来获取SAP用户的先前登录日期?

  10. 10

    有没有一种用户级的简单方法来强制终止sshfs连接?

  11. 11

    寻求一种简单的方法来订购我的 dfs 来连接它们

  12. 12

    在Oracle 8上的Sentence Case中是否有一种简单的方法来转换字符串?还是应该使用正则表达式?

  13. 13

    有没有一种javascript方法来告诉我们输入范围滑块值是上升还是下降?

  14. 14

    有没有一种好的方法来识别字符串中是否包含日期信息

  15. 15

    是否有一种正确的方法来对Laravel中的一种形式的不同部分实施部分验证

  16. 16

    寻找一种干净的方法来从一组节点中查找关系

  17. 17

    实现一种方法来设置一些TextView属性

  18. 18

    django-allauth是否提供一种简单的电子邮件/密码方法来代替django的用户名/密码方法

  19. 19

    如何编写一种方法而不是多种方法来获取用户输入并将值分配给正确的变量?

  20. 20

    寻找一种更强大的方法来自动调整内容到视口的大小

  21. 21

    一种高效的方法来生成所有可能的方法来配对数据集中的项目

  22. 22

    创建一种方法来停止JTable中出现的许多重复值

  23. 23

    有没有一种快速的方法来打开命令窗口

  24. 24

    ggplot2是否有一种简单的方法来包装注释文本?

  25. 25

    是否有一种更简单的方法来遍历Laravel中的对象属性列表

  26. 26

    Java Spring有一种扩展@Scheduled的方法来读取文件

  27. 27

    泽西岛:有一种干净的方法来指定允许的URL扩展吗?

  28. 28

    需要一种更好的方法来遍历表单控件

  29. 29

    关系更改时,有没有一种很好的方法来更新NSManagedObject?

热门标签

归档