0

私がやりたいことは、ユーザーがログインしたときに、ユーザー名、ログイン時間、および IP アドレスをデータベースに挿入することだけです。これには、PHP で文字通り数行のコードが必要ですが、いくつかのフォーラムでヘルプを要求して試した後多くの異なる解決策があるため、ASP にとっては不可能な作業のようです。

私が得た最も近いものは、これをフロントaspxページに追加することです(ログイン後にリダイレクトされる場所):

if (Request.IsAuthenticated)

問題は、私の命を救うために、その後挿入を行うことができないことです。グリッド ビューに選択しますか? 問題ない。ページ読み込み時にデータを挿入しますか? とんでもない。

これまでに誰もこれに遭遇したことがないとは信じられません。

その他の注意事項

  • サイトは Visual Studio に読み込まれません。

  • 一時ディレクトリの .cs ファイルを編集しようとしましたが、何も起こらないようです

  • webroot ディレクトリの .aspx ファイルを編集しています。

  • そのまま C# を使用したいのですが、aspx ページの途中に追加する方法がわかりません。

4

2 に答える 2

0

から継承できる SQL-Server を使用している場合は、ASP.NET メンバーシップ プロバイダーSqlMembershipProviderを使用できます。

次に、それが返された場合(または常に) 、オーバーライドValidateUserしてログに記録できます。false

bool isValid = base.ValidateUser(username, password);

次の方法で ip を取得できます。

public static void logWrongPasswordAttempt(string userName, string passWord)
{
    // Look for a proxy address first
    var IP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    //Trim and lowercase IP if not null
    if ((IP != null))
    {
        IP = IP.ToLower().Trim();
    }
    if (IP == null || IP.Equals("unknown"))
    {
        //If IP is null use different detection method else pull the correct IP from list.
        IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToLower().Trim();
    }

    List<string> IPs = null;
    if (IP.IndexOf(",") > -1)
    {
        IPs = IP.Split(new[]{','}, StringSplitOptions.None).ToList();
    }
    else
    {
        IPs = new List<String>() { IP };
    }

    foreach (string ip in IPs)
    {
        // insert your record into database
    }
}
于 2013-02-04T22:27:27.997 に答える
0

コンパイル済みのサイトで作業しているようですね。コードを編集しても何も起きませんか?

コードを完全に制御できる場合は、そのイベント ハンドラーでデータベースに挿入するのは簡単なことです。常に実行しています。標準の ADO コードを使用していますか、それともデータバインドされたコントロールなどを使用しようとしていますか? まっすぐな ADO 呼び出しだけで十分です...

ほら…こんなもの…

SqlConnection connection = new SqlConnection(connectionString))
SqlCommand command = new SqlCommand(queryString, connection);

connection.Open();
SqlDataReader reader = command.ExecuteQuery();
于 2013-02-04T23:10:34.770 に答える