0

MVC3 Web アプリは、SQL Server 2012 のデータベースに関連付けられています。これは、サード パーティによってホストされる公開 Web サイトになります。

フォーム認証を初めて使用します。数か月前にデフォルトのインターネット テンプレートを使用して VS 2012 でプロジェクトを作成したので、標準のアカウント コントローラーなどを使用しています。aspnet-MyAppName-bunch of numbers という名前の新しい空のデータベースが作成されていることに気付きました。userprofile テーブルなどのためだと思います。

私はそれで行くべきかどうか疑問に思っています。既存のデータベースにユーザー テーブルを作成済みで、Crypto ライブラリを使用してクラスを作成し、パスワードをハッシュして保存し、ユーザー アカウントを作成しました。アプリ間のセキュリティのためにフォーム認証を実装しています。つまり、メンバーのみのページを表示する権限があることを確認します。

既存の validateUser クラスを Forms Auth と統合するには、何をする必要がありますか? すべてのユーザー セキュリティ機能を既存のデータベースに保持したい場合、接続文字列をどこかで変更するだけでよいでしょうか? それともそれ以上のものがありますか?

私が言ったように、私は Forms Auth を初めて使用するので、本当に奇妙なことをしようとしていて、そのままにしておく必要がある場合は、お知らせください。ありがとう。

====編集=======

テアンクス・ザック。私はこれを調べ始め、既存のデータベースにメンバーシップ テーブルが必要なため、テーブルを追加する asp_regsql.exe を実行しました。メンバーシップ ユーザー テーブルと既存のテーブルの一部との間にリレーションシップを追加する必要がありますが、すべての ID 列が int であり、すべてのメンバーシップ テーブルが一意の識別子であり、関連付けられません。私の既存のテーブルにはコンテンツがあります。uniqueidentifiers を変更しようとしましたが、機能しません。制約を削除しようとしても、テーブルは削除されませんが、制約ではないと言って制約は削除されません。新しいメンバーシップ テーブルを既存のものとうまく組み合わせる方法はありますか?

4

1 に答える 1

0

グッド プラクティスは、Mempership プロバイダーです。

web.config で、認証モードとカスタム メンバーシップ プロバイダーを指定します。

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear/>
    <add name="CustomMembershipProvider" 
        type="CustomMembership.Models.CustomMembershipProvider"
        connectionStringName=""
        enablePasswordRetrieval="false"
        enablePasswordReset="true"
        requiresQuestionAndAnswer="false"
        requiresUniqueEmail="false"
        maxInvalidPasswordAttempts="5"
        minRequiredPasswordLength="6"
        minRequiredNonalphanumericCharacters="0"
        passwordAttemptWindow="10"
        applicationName="/" />
  </providers>

カスタムメンバーシップを構築するための簡単な例です。拡張できる追加機能がたくさんあります

public class CustomMembershipProvider : MembershipProvider
{

    public override bool ValidateUser(string username, string password)
    {
        //all your logic to validate the user credentials to your custom db
    }

}

注: これはほんの一例です。メンバーシップ プロバイダーのドキュメント全体を取得するには、 http://msdn.microsoft.com/en-us/library/f1kyba5e( v=vs.100 ).aspx を参照してください。

ここで見つけることができる完全な例http://msdn.microsoft.com/en-us/library/6tc47t75(v=vs.100).aspx

于 2013-05-04T00:39:07.207 に答える