【问题标题】:Why does System.Web.HttpContext.Current.User.Identity.Name return an empty string?为什么 System.Web.HttpContext.Current.User.Identity.Name 返回一个空字符串?
【发布时间】:2013-05-23 07:24:46
【问题描述】:

我有以下代码来验证用户是否有权访问应用程序。问题是 System.Web.HttpContext.Current.User.Identity.Name 返回空。我检查了。可能是什么问题呢?我的其他应用程序使用相同的代码 sn-p 并且它在那里工作。为什么会这样?

string username = System.Web.HttpContext.Current.User.Identity.Name;
string str = "SELECT LASTNAME +', '+ FIRSTNAME AS NAME, USER_NAME, DEPARTMENT FROM DBNAME.DBO.TABLENAME WHERE USER_NAME = '" + username + "' ";
SqlCommand cmd = new SqlCommand(str, conn);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr.HasRows == false)
{

        Server.Transfer("unauthorized.htm");
}
else
{
    while (rdr.Read())
    {
        name = rdr["NAME"].ToString();
        username = rdr["USER_NAME"].ToString();
        dept = rdr["DEPARTMENT"].ToString();
    }
}

【问题讨论】:

  • 此代码是否取自 ASP.net 应用程序?
  • 两个应用都管理自己的身份验证状态吗?
  • 或许值得将您的 web.config 提供给我们
  • 您使用的是什么身份验证?形式,联邦?您需要查看您的身份验证代码,查看用户是如何填充的
  • 你可能想看看这个答案stackoverflow.com/a/8841841/293712 和用户其他选项

标签: c# asp.net


【解决方案1】:

您似乎有一个匿名用户。如果您不想允许匿名用户,请将以下内容添加到 web.config:

<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

【讨论】:

  • 这只是给我服务器错误 401 - 未经授权:由于凭据无效,访问被拒绝。
  • IIS 是否配置为使用 Windows 身份验证,您的 web.config 中是否有 &lt;authentication mode="Windows" /&gt;
  • 是的,是的。这很奇怪。我的其他应用程序具有相同的代码。它在那里工作得很好。
  • 哦哦!所以我很愚蠢,我真的忘记配置 IIS 身份验证。我只是以为我已经做到了,但没有。
  • 你使用了什么配置?
【解决方案2】:

如果您在 IIS Express 中使用 Windows 身份验证,请确保您在 C:\Users\[username]\Documents\IISExpress\config\applicationhost.config 中。

查看相关问题:IIS Express gives Access Denied error when debugging ASP.NET MVC

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2013-10-22
    • 2021-10-09
    • 2013-04-09
    相关资源
    最近更新 更多