1

私はWebセキュリティに慣れていないので、自分で実装したくありません。ASP.NETMVCインターネットアプリケーションのVS2012テンプレートを介してSimpleMembershipを使用する予定です。問題は、WebAPIを介してデータを渡す必要があることです。

Web APIに基本認証を使用する予定なので、httpヘッダーでusername/passを渡す必要があります。Thinktecure.IdentityModelを使用してメッセージを傍受できます。ASP.NETメンバーシップを使用する例を次に示します。

authConfig.AddBasicAuthentication((userName, password) =>  
  Membership.ValidateUser(userName, password));

Membership.ValidateUserを独自のbool関数に置き換えることができます。ユーザー名/パスワードを使用してカスタムデータベースを正常に照会しましたが、すべて正常に機能しました。ただし、文字列(またはエンコードされた)パスワードを保存したくないため、テンプレートのユーザーデータベースを使用しています。

SimpleMembershipのデータベースを使用して資格情報を手動で検証する方法がわかりません。UserProfileを取得できますが、プロファイルのパスワードを確認する方法がわかりません。

UserProfile user = context.UserProfiles.Find(1);

==OUTPUT==
user
    UserId: 1
    UserName: "bob"

入力したパスワードが既存のユーザーのパスワードと一致するかどうかを確認する方法を知っていますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

なぜ使用しないのMembership.ValidateUserですか?これは、ASP.NETメンバーシップだけに限定されるものではなく、[InitializeSimpleMembership]ここに)属性が正しい場所にあるか、その内部のロジックを他の場所で自分で実行していること、およびWebMatrixなどへの正しい参照があることを前提としていMembership.ValidateUserます。 SimpleMembershipsユーザーを検証します

自分でデータベースにアクセスしたい場合で、ハッシュ化されたパスワードなどを使用していると仮定すると、入力したパスワードを選択する前にハッシュ化する必要があるため、この記事が役立つでしょう。 EFまたは(その他のデータベースアクセス方法)ユーザー名とハッシュ化されたパスワードが一致するユーザーテーブルから選択します。しかし、Membership.ValidateUserがこれをすべて行うので、これを行う明確な理由は考えられません。

于 2012-12-15T11:12:15.493 に答える