あなたは正しい軌道上にあるように見えます。
私はよく似たようなことをします。私はそれを必要としないので一般的ではありませんが、あなたはそれをかなり簡単に変更することができます。
ユーザーが登録したら、クリックするとhttp://domain/member/activate/id
などのGUIDに移動するリンクを含むアクティベーション電子メールを送信します。それは私が必要なすべてです。私はメンバーのIDを調べ、それをアクティブにします。誰かが新しいメンバーを推測する可能性は、かなりスリムで、たとえそれがあっても、非常にの電車から離れている。
より一般的で安全なものが必要なことがわかります。ユーザーと一緒に保存してからアクティベーションコールを保存するキー(新しいGUIDなど)を作成することもできます。http://domain/member/activate/id?key={the guid}
。鍵を暗号化することさえできます。しかし、それはあなた次第です。
再利用可能でより汎用的なものについては、アクティブ化IDのリストを含むアクティベーションコンポーネントを作成できます。しかし、特定のタイプのエンティティ(ユーザー登録やフォームの検証など)を有効にするには、バックエンドで実行する方法が必要です。たとえば、http://domain/activation/activate/id
を内部で呼び出すと、idを参照して型を取得します。アクティベーション要求は、もちろん、ユーザが登録するときに作成されます。ユーザーが決してアクティブにならない可能性があるため、有効期限/タイムアウトを保存することをお勧めします。
それぞれのタイプについて、関連するコントローラの起動メカニズム(member/activate/key
またはformvalidation/activate/key
)を使用できます。したがって、アクティベーションコントローラがアクティブ化する要求を受け取ると、タイプごとにルートのリストが設定され、関連するルートにナビゲートして「実際の」アクティベーションを実行します。
別のオプションは、インプロセスコンポーネントを持つことである活性化などを実行:MemberActivator
またはFormValdationActivator
によって実装IActivator
インタフェースをして、タイプ(.NETタイプまたは文字列をもとに、あなたに関連するプロバイダを与えるIActivatorProvider
実装を持っていますプロバイダーに入力してください---それはあなた次第です)。
サービスバスのエンドポイントに合わせてActivationRequestCommand
を渡すこともできます。
多くのオプションがあります。 HTH
こんにちはエベン、帰りにありがとう、私は考えなかった有効期限/タイムアウトプロセスとIActivator。 – dtjmsy