3

私は現在、人々が登録でき、彼らが自分のコンテンツのページを持つことができるウェブサイトを構築しています。Microsoft VisualStudio2010で提供されているユーザーの作成ウィザードを使用せずにカスタムログインページを作成しました。バックエンドにSQLデータベースがあります。

tblUsers

ユーザーが登録する場所が保存されます。電子メールのSMTP設定を構成し、登録者の電子メールを使用して電子メールを送信できるようにしました。私はこれをテストしました、そしてそれは働きます。

問題点

(1)電子メールで送信するために添付するアクティベーションリンクを生成する方法について混乱しています。

(2)ユーザーに関連するSQLテーブルのフィールドを更新するようにコードをプログラムするにはどうすればよいですか?

例:ユーザー検証済み= true

ユーザーが電子メールで送信されたリンクをクリックしたとき。

(3)ユーザーが確認プロセスを経ずにサイトにログインできないようにするにはどうすればよいですか?(これは、ユーザーの作成ウィザードでいくつかの変更を加えることで簡単に実行できることを認識していますが、登録をカスタムで作成したため、登録ボタンのクリックイベントで実行されます)したがって、方法について頭を悩ませているようには見えません。それ。

可能であれば私を助けてください。

4

2 に答える 2

10

「ActivationToken」のようなフィールドを作成し、GUIDを生成することをお勧めします。これは、SQLで関数を呼び出すことによって直接実行するnewid()か、C#で。を呼び出すことによって実行できますGuid.NewGuid()。これは非常にユニークでランダムな値であり、ブルートフォース攻撃はほぼ不可能です。

したがって、ユーザーが登録するときは、次のようにします。

insert into tblUsers (Username, Password, Active, ActivationToken) values ('johndoe', 'mypassword', 0, newid())

リンクは次のようになります:http://yoururl.com/Activate.aspx?token = {yourActivationGuid}

Update tblUsers set Active=1 where ActivationToken={yourActivationGuid}

UserIDがすでにGUIDである場合は、おそらくそれを使用するだけで解決できます(aspnet_userテーブルを使用している場合など)。ログインを許可しない場合は、アクティブフラグがtrueに設定されているかどうかを確認してください。そうでない場合は、ログインを禁止します。

したがって、ログインを検証するには、次のようにします。

select * from tblUsers where Username="johndoe" and Password="mypassword" and Active=1
于 2013-03-03T01:14:08.613 に答える
0

ユーザーログインページを作成します。送信がクリックされたら、上記のように新しいguid()を生成し、アクティベーションGUID(一意)を使用してユーザーに電子メールを送信し、ユーザーがクリックしたら、データベース(SQL)でユーザーをアクティベートします。

于 2013-03-03T01:41:35.060 に答える