强制Windows身份验证IID

时间:2013-02-28 16:51:28

标签: asp.net security

我遇到了ASP.net应用程序的身份验证问题。这是有效的,现在由于某种原因已停止。我有一个连接到SQL数据库的Web表单,用于简单的数据输入。我试图在后台捕获用户名和时间以包含条目。我在web.config文件中有以下代码:

<authentication mode="Windows"/>

这是在system.web分组中。

我在.cs文件中为网络表单设置了以下例程:

protected void btnUpdate_Click(object sender, EventArgs e)
{

    using (SqlConnection con = new SqlConnection("server=(local);database=InvoiceSHC;Trusted_Connection=Yes"))
    {

        // Get the UserId of the logged in user 

        string UserName = "";
        if (HttpContext.Current.User.Identity.IsAuthenticated)
       {
           UserName = HttpContext.Current.User.Identity.Name.ToString();
       }
        else
       {
           UserName = "UnauthenticatedUser";
       } 


        string Timestamp = DateTime.Now.ToString();
        //Not sure why you need a SqlDataAdapter unused here.
        //SqlDataAdapter DA = new SqlDataAdapter("UpdateSHCInvoice", con);
        SqlCommand cmd = new SqlCommand("UpdateSHCInvoice", con);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@Ref", dlRef.SelectedItem.Value);
        cmd.Parameters.AddWithValue("@PhaseName", dlPhase.SelectedItem.Value);
        cmd.Parameters.AddWithValue("@PageType", dlPageType.SelectedItem.Value);
        cmd.Parameters.AddWithValue("@Page", tbPage.Text);
        cmd.Parameters.AddWithValue("@Percent", dlPercent.SelectedItem.Value);
        cmd.Parameters.AddWithValue("@ChngType", dlChngType.SelectedItem.Value);
        cmd.Parameters.AddWithValue("@UserName", UserName);
        cmd.Parameters.AddWithValue("@Timestamp",Timestamp);
        con.Open();
        cmd.ExecuteNonQuery();

        GridView1.DataBind();

在IIS中,我禁用了匿名身份验证。我启用了asp.net模拟和Windows身份验证。

当我第一次设置时,我正在为用户获取域名和ID。现在,当我访问该站点时,系统不会提示您输入用户名和密码。这种认证的东西真的很痛苦。

我使用Firefox作为浏览器。我也在Safari上尝试了相同的结果。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您是否在web.config文件中添加了授权部分?

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

这样做是告诉Web服务器您要允许任何经过身份验证的用户(users="*")并拒绝任何匿名用户(users="?")在根级别以及随后的整个站点。

如果您需要针对不同页面或文件夹的不同授权设置,则可以使用location元素:

<configuration>
    <location path="members">
        <system.web>
            <authorization>
                <allow users="*" />
                <deny users="?" />
            </authorization>
        </system.web>
    </location>
    <location path="AnonymousPage.aspx">
        <system.web>
            <authorization>
                <allow users="?" />
            </authorization>
        </system.web>
    </location>
</configuration>

这可以添加到您的根web.config文件中,也可以添加到与所需文件夹中的web.config文件中的第一个示例相同的方式。