【解決方法】リンクに有効期限を設定する方法は?


私のasp.netプロジェクトでは、ForgotPasswordページで、一意のIDを持つリンクをユーザーのemailidに送信しています。また、SQLサーバーのforgetpasswordテーブルにメール、uid、時間を挿入しています。そのリンクはユーザーにパスワードのリセットページを参照しています。 ここで、そのリンクの有効期限を設定したいということは、リンクが 1 日で期限切れになることを意味します。 どうやってやるの?

解決策 1

あなたがどのように試したかを確認するためのコードを提供していませんが、それでも
これを試して

DateTime dtCreate= [Get Date from DB];
DateTime dtNow = DateTime.Now;
DateTime dtExp = dtCreate.AddDays(1);
if(dtNow > dtExp)
{
Response.Write("ページの有効期限が切れています!!!!");
}

解決策 2

これが私のコードです:

パブリック部分クラス ForgotPassword : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ToString());
SqlDataAdapter da,da1;
SqlCommand コマンド;
データセット ds,ds1;
Guid g = Guid.NewGuid();
protected void Page_Load(オブジェクト送信者, EventArgs e)
{

}
protected void btnSubmit_Click(オブジェクト送信者, EventArgs e)
{
文字列 GUID = g.ToString();
DateTime d = DateTime.Now;
//Response.Write(d.ToString());

文字列 s = "tblForgotPassword(Email, ActivationCode, TimeDuration,Status) 値に挿入 ('"+txtemail.Text+"','"+guid+"','"+d.ToString()+"','Pending') ";
da1 = 新しい SqlDataAdapter(s,con);
ds1 = 新しいデータセット();
da1.Fill(ds1);

試す
{
DataSet ds = 新しい DataSet();

{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT RegId,UserName,Password FROM tblRegistration Where Email="" + txtemail.Text.Trim() + """, con);
SqlDataAdapter da = 新しい SqlDataAdapter(cmd);
da.Fill(ds);
con.Close();
セッション["email"] = txtemail.Text;
}

if (ds.Tables[0].Rows.Count > 0)
{
セッション["username"] = ds.Tables[0].行[0]["UserName"];
セッション["RegId"] = ds.Tables[0].行[0]["RegId"];
MailMessage メッセージ = 新しい MailMessage();
// 送信者の電子メール アドレス。
Msg.From = new MailAddress(txtemail.Text);
// 受信者の電子メール アドレス。
Msg.To.Add(txtemail.Text);
Msg.Subject = "パスワードの詳細";
//Msg.Body = "こんにちは。
ログイン情報を確認してください

あなたのユーザー名: " + ds.Tables[0].行[0]["UserName"] + "

あなたのパスワード: " + ds.Tables[0].行[0]["Password"] + "

";

string Body = "こんにちは、このメールはパスワードを変更するためのものです" +
"パスワードを変更するには、以下をクリックしてください
";
本文 += "http://localhost:1354/socialnetworksite/ResetPassword.aspx?uid=" + g.ToString();

Msg.Body = 本文;

Msg.IsBodyHtml = true;
// リモート SMTP サーバーの IP。
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("abc@gmail.com", "abc");
smtp.EnableSsl = true;
smtp.Send(メッセージ);
//メッセージ = null;
lbltxt.Text = "パスワードの詳細がメールで送信されました";
// テキストボックスの値をクリア
txtemail.Text = "";
}
そうしないと
{
lbltxt.Text = "入力した電子メールは存在しません。";
}
}
キャッチ(例外例)
{
Console.WriteLine("{0} 例外が発生しました。", ex);
}
}
public string Encryptdata(文字列パスワード)
{
文字列 strmsg = string.Empty;
バイト[] エンコード = 新しいバイト[password.Length];
エンコード = Encoding.UTF8.GetBytes(パスワード);
strmsg = Convert.ToBase64String(エンコード);
strmsg を返します。
}
}

解決策 4

こんにちは、これは古い質問であり、この回答はあなたの質問に対する正確な解決策ではありません。

しかし、これは、既存のリンクの一時的な有効期限リンクを作成したい他の読者に役立つかもしれません.

時間またはクリック数に基づいて既存のいいねを期限切れにしたい場合は、簡単に実現できます。

次のようなさまざまな一時的な有効期限リンクジェネレーターのいずれかをオンラインで使用できます- [DELETED]

ありがとう。

コメント

タイトルとURLをコピーしました