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>

これが行うことは、ルート レベルで認証済みユーザーを許可し ( users="*")、匿名ユーザーを拒否する( ) ことを Web サーバーに伝え、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 に答える