2

モバイル ユーザーが携帯電話でコンテンツを購入およびダウンロードするための新しいモバイル Web プラットフォームを構築します。以前は完全にオーダーメイドのログイン メカニズムを使用していましたが、プラットフォームの次のバージョンではカスタム メンバーシップ プロバイダーを使用することを検討しています。

問題は、少し変わった「ログイン」メカニズムの要件があるため、MembershipProvider が最適であると 100% 確信しているわけではないということです。

以下の要件について、「はい、メンバーシップ プロバイダーが適しています」または「いいえ、丸い穴に四角いペグをぶつけています」という一般的なフィードバックを探してください。

要件

  1. ValidateUser(string username, string password)ユーザーは、「携帯電話番号」(ユーザー名) と「PIN」(パスワード) でログインする必要がある場合があります。既にサインアップして SMS で確認済みであり、メソッドの実装を満たしているため、これは非常に適しています。

  2. ユーザーは「携帯電話番号」のみでログインする必要がある場合があります。この場合、弊社側で身元確認を行う必要はありません。これにより、ユーザーの手順の数が減り、請求時に特定のオペレーターによって検証が行われます。(オペレーターは、入力された携帯電話番号がオペレーターの支払いサイトにヒットしたときにハンドセットと一致することを検証できます)...ユーザーがパスワードを持っていても、何らかの方法でメンバーシッププロバイダーをブラフして、彼らを入れる必要があります.空のパスワードで。

  3. ユーザーはログインする必要はまったくありません。この場合、ユーザーを特別なネットワーク オペレーターの Web ページに透過的にバウンスすることができ、ユーザーが透過的にバウンスされたときに、ヘッダーで携帯電話番号を取得します。この場合、プログラムでヘッダーからその番号を取得し、代わりにコード ビハインドでログインを実行する必要があります (ここでも PIN/パスワードなしで)。ユーザーは魔法のように自動ログインされます。

要件 2 と 3 は少し奇妙です。基本的に、1 つのメンバーシップ プロバイダーが満たす必要がある 3 つの異なるログイン メカニズムがあります。

  • ユーザーが入力したモバイルとユーザーが入力した PIN
  • ユーザーが入力したモバイルのみ (暗証番号の要件を満たすと思われるコード ビハインド)
  • 完全に透過的なログイン (ログイン プロセス全体を実行するためのコード ビハインド)

上記についてコメント/フィードバックを受け取った人、または過去に行った奇妙なメンバーシッププロバイダーの実装についてアドバイスがある人.

4

1 に答える 1

1

うまくいくと思います。私たちは、私たちのサイトの 1 つで #3 を行います。これを処理するために使用するコードのチャンクを次に示します。これを使用するには、ログイン ページ (transparentlogin.aspx など) を作成し、web.config ファイルでこのページへの匿名アクセスが許可されていることを確認し、transparentlogin.aspx ページの page_load 関数に次のようなコードを挿入します。

const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

if (MobileNumberFoundInHeader())
{
  string username = GetMobileNumberFromHeaders();
  // Authenticate the user behind the scenes
  System.Web.Security.FormsAuthentication.SetAuthCookie(username, false);
  System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword);
}
else
{
  throw new Exception ("Mobile Number Missing");
}

次に、MembershipProvider の ValidateUser 関数で、次のようなチェックを行ってください。

public override bool ValidateUser(string username, string password)
{
 const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

 bool ValidationSuccess = false;

 // If the password being passed in is the right secret key (same  
 // for all users), then we will say that the password matches the
 // username, thus allowing the user to login 
 if (password == specialpassword)
 {
   ValidationSuccess = true;
 }

 if (DoStandardUsernamePasswordVerification() == true)
 {
   ValidationSuccess = true;
 }

 return ValidationSuccess;
}

要件 2 については、少し混乱しています。オペレーターとは正確には何ですか?Web ブラウザーを使用して Web サイトを閲覧する携帯電話を扱っていると思いました。オペレーターはどこに当てはまりますか?上記で提案した解決策が役に立たない場合は、Operator の詳細を記載した返信を投稿してください。

ティム

于 2009-07-06T19:40:03.290 に答える