2

[この質問は ASP.NET MVC4 に関するもので、ベスト プラクティス アプローチに関するものです。ハックを提案しないでください。]

リクエスト URL で送信された認証トークンを使用してユーザーを認証したいと考えています。パスワード リセット トークンと同様に機能しますが、この場合はリセット ページに移動せず、代わりにサイトの一部へのアクセスを許可します。アイデアは、認証トークンを含む URL をユーザーの確認済みの電子メール アドレスに送信することです。ユーザーはリンクをクリックして、パスワードを入力せずにいくつかのアクションを実行できます。

すぐに使用できる ASP.NET には [Authorize] 属性と SimpleMembershipProvider があります。これらはうまく機能しているように見えますが、内部で (データベース テーブルの自動生成などの) ブードゥー教の魔法を行っているため、私は使用しません。それらを拡張して、このリンクベースの認証トークンを追加する方法を知っています。

正確な答えは期待していませんが、正しい方向に向けてください。

ありがとう!

4

3 に答える 3

3

うーん、大雑把な質問です。しかし、少なくともあなたを正しい方向に導くように努めます。

したがって、最初にフォーム認証をベースとして使用することをお勧めしますが、それを使用してカスタマイズする必要があります。また、これはフォーム認証のネイティブな動作であるため、認証に Cookie を使用したくないと思います。

カスタム クエリ文字列トークン ベースの認証を行う際に考慮する必要がある最も重要な点です。

  1. ログイン アクションを作成し、このアクションでユーザーを承認します。ユーザーがアクセスを許可している場合は、FormsAuthentication に AuthCookie の作成を依頼します。さらに進むには、クエリ文字列で運ぶ認証トークンとして httpCookie.Value を使用するだけです。

  2. このクエリ文字列トークンを処理して Cookie に変換Application_BeginRequestするを実装する必要があります。このアプローチにより、すべての ASP.NET フォーム認証インフラストラクチャを活用できます。Global.asax

これは、コードなしの非常に高レベルの図です。さらに詳細なヘルプが必要な場合は、それも提供できます。

于 2013-03-07T08:07:19.497 に答える
1

Actionを受け入れるレギュラーを使用する必要がありますHttpGet。トークンを受け取ったら、すぐに無効にして、再度使用できないようにします。また、24時間や72時間など、事前に定義された期間内のトークンのみを受け入れます。

于 2013-03-07T08:01:06.453 に答える