1

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

<authentication mode="Windows"/>

这是在 system.web 分组中。

我在 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 上尝试过,结果相同。

非常感谢任何帮助。

4

1 回答 1

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 文件中。

于 2013-02-28T17:25:19.977 回答