use*_*679 25 c# asp.net authorization windows-authentication windows-security
我想使用Windows身份验证获取用户名
实际上我实现了"以不同用户身份登录",单击此按钮时,Windows安全性将出现在那里我们可以提供凭据.
在那个时候,如果我提供一些其他凭证,它只采用当前用户名.如何从Windows安全性获取给定的凭据用户名?
IIS中的主机应用程序然后禁用匿名身份验证并启用了Windows身份验证.
web.config中:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<identity impersonate="true"/>
<authorization>
<allow users="*"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<directoryBrowse enabled="true" />
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
Run Code Online (Sandbox Code Playgroud)
的.cs
在这里,我总是得到默认的用户名
string fullName = Request.ServerVariables["LOGON_USER"];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢
sle*_*pox 29
您可以通过以下方式在Windows身份验证下获取用户的WindowsIdentity对象:
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
Run Code Online (Sandbox Code Playgroud)
然后你可以获得有关用户身份信息的信息.
请注意,您需要为这些代码提供HttpContext.
Xan*_*vis 21
这些是您可以访问的不同变量及其值,具体取决于IIS配置.
方案1: IIS中的匿名身份验证,模拟关闭.
HttpContext.Current.Request.LogonUserIdentity.Name SERVER1\IUSR_SERVER1
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET
Run Code Online (Sandbox Code Playgroud)
方案2: IIS中的Windows身份验证,模拟关闭.
HttpContext.Current.Request.LogonUserIdentity.Name MYDOMAIN\USER1
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET
Run Code Online (Sandbox Code Playgroud)
方案3: IIS中的匿名身份验证,模拟
HttpContext.Current.Request.LogonUserIdentity.Name SERVER1\IUSR_SERVER1
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName IUSR_SERVER1
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\IUSR_SERVER1
Run Code Online (Sandbox Code Playgroud)
方案4: IIS中的Windows身份验证,模拟
HttpContext.Current.Request.LogonUserIdentity.Name MYDOMAIN\USER1
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName USER1
Security.Principal.WindowsIdentity.GetCurrent().Name MYDOMAIN\USER1
Run Code Online (Sandbox Code Playgroud)
图例
SERVER1\ASPNET:服务器上正在运行的进程的标识.
SERVER1\IUSR_SERVER1:IIS中定义的匿名访客用户.
MYDOMAIN\USER1:远程客户端的用户.
这应该工作:
User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
Identity 返回一个 IPrincipal
这是Microsoft 文档的链接。
小智 0
我认为由于以下代码,您没有获得新的凭据
string fullName = Request.ServerVariables["LOGON_USER"];
Run Code Online (Sandbox Code Playgroud)
您可以尝试自定义登录页面。
| 归档时间: |
|
| 查看次数: |
97920 次 |
| 最近记录: |