加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET获取当前用户名

发布时间:2020-12-16 03:29:24 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用ASP.NET和VB.NET在我们公司的Intranet上构建一个应用程序. 一旦我的应用程序发布到IIS,这些函数都不会返回任何内容.它们在开发中工作正常(即:按F5我得到我的常规网络用户名),但是一旦发布它们就会返回”(空字符串). HttpContext.Current.User
我正在尝试使用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中禁用匿名身份验证.
如果在IIS中启用了匿名身份验证,则User.Identity.Name可能为空.

在web.config中设置

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

使用User.Identity.Name获取登录用户.

Environment.UserName是正在运行的线程标识.如果您已经启用了Mark所说的Impersonation,那么您可以发现返回的结果会有所不同.但是,这需要ASP.NET Impersionation.如果您不需要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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读