【问题标题】:Forms Authetnication works with Forms Authentication disabled in IIS表单身份验证与 IIS 中禁用的表单身份验证一起使用
【发布时间】:2017-01-17 10:07:10
【问题描述】:

我有一个应用程序,它使用基于表单的身份验证。我以前从未使用过这个。这是示例示例代码:

private bool ValidateUser(string userName, string password, string strConnectionString)
        {
            SqlConnection conn;
            SqlCommand cmd;
            string lookupPassword = null;

            // Check for invalid userName.
            // userName must not be null and must be between 1 and 15 characters.
            if ((null == userName) || (0 == userName.Length) || (userName.Length > 15))
            {
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.");
                return false;
            }

            // Check for invalid passWord.
            // passWord must not be null and must be between 1 and 25 characters.
            if ((null == passWord) || (0 == passWord.Length) || (passWord.Length > 25))
            {
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.");
                return false;
            }

            try
            {
                // Consult with your SQL Server administrator for an appropriate connection
                // string to use to connect to your local SQL Server.
                //conn = new SqlConnection(connectionstringremoved);
                conn = new SqlConnection(strConnectionString)

                conn.Open();
                Error.Text = "Got here";

                // Create SqlCommand to select pwd field from users table given supplied userName.
                cmd = new SqlCommand("Select pwd from users where uname=@userName", conn);
                cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25);
                cmd.Parameters["@userName"].Value = userName;

                // Execute command and fetch pwd field into lookupPassword string.
                lookupPassword = (string)cmd.ExecuteScalar();

                // Cleanup command and connection objects.
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                // Add error handling here for debugging.
                // This error message should not be sent back to the caller.
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " + ex.ToString());
               Error.Text = ex.ToString();

            }

            // If no password found, return false.
            if (null == lookupPassword)
            {
                // You could write failed login attempts here to event log for additional security.
                return false;
            }

            // Compare lookupPassword and input passWord, using a case-sensitive comparison.
            return (0 == string.Compare(lookupPassword, passWord, false));

        }

我已将此应用程序发布到 IIS 6.1,并且我注意到无论是否启用表单身份验证它都可以正常工作(在以下情况下它被禁用)。

我对基本身份验证有同样的疑问。

我相信这与启用匿名身份验证有关,即启用匿名身份验证也会默认启用表单身份验证 - 或类似的东西。但是,我找不到任何文件来支持这一说法。

【问题讨论】:

    标签: c# forms-authentication iis-6


    【解决方案1】:

    您已启用匿名身份验证

    这实际上意味着您没有身份验证,因为匿名身份验证允许所有人进入。

    【讨论】:

    • 只启用Forms Authentication时出现错误:请求过滤模块配置为拒绝查询字符串过长的请求。这是在 404.15 页面响应中。
    • 所以这告诉我们表单身份验证确实启动了,并且它不再“无论是否启用表单身份验证都有效”。所以你现在必须进入下一个阶段,弄清楚如何绕过你的 404.15 页面响应......
    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多