gpt4 book ai didi

ASP.NET 获取当前用户名

转载 作者:行者123 更新时间:2023-12-04 10:29:41 26 4
gpt4 key购买 nike

我正在尝试使用 ASP.NET 和 VB.NET 在我们公司的 Intranet 上构建一个应用程序。

一旦我的应用程序发布到 IIS,这些函数都不会返回任何内容。它们在开发中运行良好(即:按 F5 我得到我的常规网络用户名),但一旦发布它们返回 '' (一个空字符串)。

HttpContext.Current.User.Identity.Name
Page.User.Identity.Name

我正在寻找可以获取当前用户登录名的东西——任何东西。请注意,由于其他功能要求,我无法更改 web.config 中的这些设置。
    <authentication mode="Windows"/>

<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetWindowsTokenRoleProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="480" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All" />

我也不能更改任何 IIS 设置,以包括“启用匿名用户”设置。规范是一成不变的,我必须砍掉自己的腿(或头)才能改变它们。

我认为必须有一种方法可以使用我当前的配置获取当前登录的用户名。

有任何想法吗?

谢谢,

杰森

最佳答案

在 IIS 中禁用匿名身份验证。User.Identity.Name如果在 IIS 中启用了匿名身份验证,则可能为空。

在 web.config 中设置

<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>

使用 User.Identity.Name获取登录用户。
Environment.UserName是正在运行的线程标识。如果你像Mark所说的那样开启了Impersonation,你会发现返回的结果会有所不同。但是,这需要 ASP.NET 模拟。如果不需要ASP.NET Impersonation和处理线程标识,可以忽略 Environment.UserName如果并且只是使用 User.Identity.Name.
还有 check在执行任何操作之前。
 if (User.Identity.IsAuthenticated)
{
Page.Title = "Home page for " + User.Identity.Name;
}
else
{
Page.Title = "Home page for guest user.";
}

这是一个 good example

关于ASP.NET 获取当前用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com