我遇到了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上尝试了相同的结果。
非常感谢任何帮助。
答案 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文件中的第一个示例相同的方式。