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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java如何获取window 客户端的登录用户名称
java获取window客户端的登录用户名称,可以使用properties类来获取,如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.qiu.lin.he;  
C# 获得本地计算机名称和登录用户名
程序运行过程中有时候要调用本地计算机的信息,这个时候我们可以通过 System.Environment 来取得相应的信息。 如: System.Environment.MachineName            //本地计算机名    System.Environment.UserName                  //本地计算机登录名
asp.net网站如何获得客户端windows登录用户名
asp.net网站如何获得客户端windows登录用户名。 简单的说,就是当公司电脑登录网站的时候,网站能直接显示出该电脑的window 账号。 网上有很多解法: 一, 1.在IIS中将访问方式更改为不允许匿名访问 2.在Web.config中将验证方式更改为         3.在源代码中使用 string username= Security.Princi
【cas】cas获取登录的用户名
上一篇博客通过一个简单的入门程序来认识cas的主要功能。在这里为了更好的理解cas的验证流程,推荐一篇博客: http://www.cnblogs.com/vhua/p/cas_6.html写的流程还是很清楚的。 这篇博客还是从基础做起,来总结一下在客户端获取登录用户的用户名的几种方式。 首先在你的客户端中必须要引入两个jar包: <dl> <dt>Your user name:</dt
C# Tips:获得当前登录计算机的用户(本地用户/域用户)
需要using的namespace: using System.Security.Principal;
java web 项目如何获取客户端登录帐号信息(用于SSO或其他)
但是这种方式获取的是服务端机器的信息。 举例来说,如果你使用的是Tomcat 的服务器, 那么, 以上方法获取的是Tomcat 所在机器的信息。 有的时候, 我们需要获取Web 客户端的一些信息, 用途可能是: 1. 记录Web项目的使用日志(哪个帐号在哪台机器上使用了哪个页面?) 2. 实现自动登录。 对于以上的需求1, 可能会说, 如果使用登录页面的帐号密码登录的话不就可以知道是谁登录了吗? 但并不是所有项目都是使用Form验证的方式, 可能是域帐号登录, 也可能是完全不需要登录的web 项目
获取域名和登录名
std::string GetADDomainName() { DWORD dwRet = -1; std::string strDomainName; LPWSTR pDomainName = NULL; std::wstring wstrDomainName; NETSETUP_JOIN_STATUS status ; BOOL bJoinDomain = FALSE; if (
C#获得计算机名,当前登录用户名,Ip地址 .
在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其他好的方法,可以回复一起整理:         1. 在ASP.NET中专用属性:         获取服务器电脑名:Page.Server.ManchineName         获取用户信息:Page.User         获取客户端电脑名:Page.Request.UserH
获取登录用户用户名
在php写读出session的值的公告函数//获取登录用户用户名 function getLoginUsername(){ return $_SESSION['adminUser']['username'] ? $_SESSION['adminUser']['username'] : ''; }在html加入php语句调用改方法&amp;lt;?php echo getLoginUsername(...
通过ASP.Net页面获取域用户名(当前登陆的用户)
string domainAndName = Page.User.Identity.Name; string[] infoes = domainAndName.Split(new char[1] { '//' }, StringSplitOptions.RemoveEmptyEntries); string userDomainName = ""; string userName = ""; if (infoes.Length > 1