2 ranistar ranistar 于 2016.02.04 10:07 提问

如何获取客户端当前登录的用户名和域名?

需求 : 公司网站,让普通用户访问前台页面,公司域中的用户能访问后台页面。
实现过程的问题:取到用户名和域名,和当前配置的域名和用户名比较,来控制网站后台的访问。
背景:1.网站是个Orchard框架搭的,客户端环境是WIN7+IE,服务端是IIS(**这里我是在我机器上部署,让同事访问去测试的,如果是直接运行代码调试的话,一切正常。。。**)。
尝试过的方法
1.**Request.LogonUserIdentity.User**,这个取到的是服务器的SID。。。然后**Request.LogonUserIdentity.Name**,这个取到的是“IIS APPPOOL\ASP.NET v4.0”这个值。。。
2.**HttpContext.Current.User.Identity.Name**,这个取到的是网站登录用户的用户名。
3.**System.Environment.UserDomainName.ToString()**,这个取到的是“IIS APPPOOL”;**System.Environment.UserName.ToString()**,这个取到的是“ASP.NET v4.0”。
4.**IPGlobalProperties.GetIPGlobalProperties().DomainName**这个也是取到的服务器的域名。。
目前思路
1.我在想是不是因为IIS身份验证配置的问题,IIS我用的是默认配置,启用了匿名身份验证和form身份验证。是不是禁用了匿名身份验证然后启用windows身份验证就行了?但是一般客户就不能访问了吧。。。
2.Orchard中是否有这个功能,因为刚接触Orchard,加上自己是个新手,并不是很能看懂源代码和它的运作机制(国内的文档好少,Orchard官网也是直接在连接后面加"/admin"就能够访问后台了)。
希望有经验的能帮我一下。。。

1个回答

showbo
showbo   Ds   Rxr 2016.02.04 10:35
已采纳

不可能,安全问题b/s做不了,这个和c/s模式不一样。你这种要求和获取你硬盘上x片传到服务器功能差不多了,你说可能吗

showbo
showbo 回复ranistar: vs调试启动的iisexpress以当前登录系统用户运行(你的应该是管理员身份吧),管理员权限就大了,你可以随便操作你机器,注意是你的机器,其他机器无法控制,所以只能获取到你自己的信息。你发布到iis就知道了,iis启动的进程一般是guest身份的账户运行的,你的代码肯定会报权限错误
接近 2 年之前 回复
ranistar
ranistar 回复无聊码农: 好的,我知道了,我还是试试用IP去判断吧。。。thx
接近 2 年之前 回复
showbo
showbo 回复ranistar: 你vs调试内置的iis在你机子上你做什么都可以,你当然可以获取到相关信息。发布到iis客户端通过浏览器访问,浏览器不会回发用户登录系统账户这种的,只能获取到浏览器信息,ip地址之类的,你要获取域就需要写插件安装到浏览器才行
接近 2 年之前 回复
ranistar
ranistar 那为什么VS本地直接调试的时候能够取到呢?还是说取到的其实还是服务器的。。。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!