ユーザーが登録プロセスを完了したら、確認メールをユーザーに送信する必要があります。メールの送信方法は知っていますが、検証リンクを送信するプロセスを知る必要があります。テーブルに列を作成して検証トークンを保存し、暗号化して送信する必要があります。検証トークンを保存する必要がある場合、このトークンを生成する最適な方法は何ですか。私は解決策を試しません。
3 に答える
ユーザーが正常に登録されたら、次のように GUID を生成することをお勧めします。
Guid theVerificationCode;
theVerificationCode = Guid.NewGuid();
ここで、この GUID 値をデータベース列 (おそらく のUser
ようなテーブル) に格納します。
メールを送信するときに、次のように、クエリ文字列を介して URL の一部としてこの確認コードの値を提供できます。
string theVerificationCode = GetVerificationCodeFromDatabase();
string theEmailLink = "https://www.yoursite.com/YourApp/Verify.aspx?code=" + theVerificationCode;
Verify.aspx
最後に、クエリ文字列で渡されたものとデータベースの内容が一致するロジックをページに組み込む必要があります。一致する場合はユーザーの認証を許可し、一致しない場合はエラー メッセージを表示します。
「ActivationToken」などのフィールドを作成し、GUID を生成することをお勧めします。これは、newid() 関数を呼び出すことによって SQL で直接行うか、Guid.NewGuid() を呼び出すことによって C# で行うことができます。これは非常にユニークでランダムな値であり、力ずくではほぼ不可能です。
したがって、ユーザーが登録するときは、次のようにします。
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 テーブルを使用している場合など)。ログインを許可しない場合は、Active フラグが true に設定されているかどうかを確認してください。そうでない場合は、ログインを許可しません。
したがって、ログインを検証するには、次のようにします。
select * from tblUsers where Username="johndoe" and Password="mypassword" and Active=1
はい、テーブルに列を作成して検証トークンを保存する必要があります。
アクティベーションコードを「GUID」として持つことができます
同じことを行う簡単な方法は次のとおりです。
ユーザー ID、検証トークン、および作成日を組み合わせて、クエリ文字列を作成します。
結合文字列のエンコードを行う
"?user=" + Convert.ToBase64String(Encoding.Unicode.GetBytes(String.Format("user={0}&code={1}&cd={2}", ユーザー ID, 検証, 作成日))) ;
リンクをユーザーに送信する
ユーザーがリンクをクリックすると、クエリ文字列がデコードされます
「&」を使用してスパイトすることにより、結合された値を区切ります
Encoding.Unicode.GetString(Convert.FromBase64String(ActivationDetails)).Split(new Char[] { '&' });
アカウントを有効にするために必要なすべての値があります。また、ロジックと暗号化方法を追加することもできます。ただし、基本はそのまま。
お役に立てれば。