私は時にこのメンバーシップシステム1の小さなステップを試してみて取り組むつもりです...MVC 3の基本的なカスタム会員
だから、それを言うてみましょう:
ステップ1を、私は、SQLデータベースを作成し、私はこのようになりますこと、非常に基本的なユーザーテーブルを持って、そのデータベースに:
Users
UserID int, identity, primary key
UserName nvarchar(25)
UserPassword nvarchar (25)
UserEmail nvarchar (75)
は、ステップ2、私は
ステップ3新しいASP.NET MVC3 Webアプリケーションを作成し、私はインターネットアプリケーションtemplatを選択カミソリ・ビュー・エンジンを持つeとチェック使用HTML 5セマンティックマークアップ
ステップ4、私はエンティティデータモデルウィザードでは、ADO.NETエンティティデータモデル
ステップ5を追加し、私はデータベース
から生成することを選択しますステップ6、私は私のデータ接続を選択し、エンティティ接続設定を保存するために選択するのWeb.Config
でエンティティデータモデルウィザードステップ7、==>あなたのデータベースオブジェクトを選択して、私はテーブルにチェックを入れて、 「生成されたオブジェクト名を複数化または特異化する」および「モデルに外部キー列を含める」のデフォルトのチェックを残し、
ステップ10「...コード生成項目の追加」終了
ステップ8をクリックして、私はソリューション
ステップ9を構築し、私は右の.edmxファイルをクリックしてすることを選択し、私は新しいを追加します
[OK]をクリックします。ここでは、ユーザーアカウントテーブルを使用して組み込みのアカウント/メンバーシップシステムを使用する方法についてはわかりません。今のところ、この特定のプロジェクトのために、私はロールと何もない、権限[認証]機能は必要ありません...
これは、正確には逐語的なコンプライアンスですユーザーがWebサイトにアクセスして登録またはログインすると、アプリケーションが自分のUsersテーブルを使用するようになりますか?最終的には、ユーザーがログインすると、[authorize]デコレーションが自分のユーザーのために機能するようになります。
編集:おかげで...この作品を作るために、本当に...次の変更、追加をolivehourする
ステップ10後:(サイドノート:あなたのユーザーテーブルからのUserPasswordを削除し、あなた
ステップ11、aspnet_regsql.exeツールを実行してASP.NETのテーブルをデータベースに追加します。
ステップ12 Web.configファイルを開き、EntityFrameworkのconnectionStringから "データソース"情報だけをコピーし、 "ApplicationServices" connectionString "data source"を貼り付けて、EntityFrameworkのデータソースに置き換えます。
ステップ13、ソリューションエクスプローラで、コントローラディレクトリを右クリックし、コントローラを追加します。この時点で、あなたのUserControllerを追加してください。
ステップ14、AccountControllerの[HttpPost] Registerアクションメソッド内で、 "if(createStatus == MembershipCreateStatus。成功)」声明、次の行を追加します。
TheNameOfYourEntities db = new TheNameOfYourEntities();
User user = new TheNameOfYourProject.User();
user.UserName = model.UserName;
user.UserEmail = model.Email;
db.Users.Add(user);
db.SaveChanges();
ステップ15、ソリューションのビルド、すべてを保存し、ファイル名を指定して実行
この考え方は、かつて私の考えを超えていましたが、私はそれがハックと見なされることを心配しましたが、それについてもっと考えると、他のやり方も同様にハック、私はそれを試してみましょう。 –
これはハックではありません。imhoはappdbをメンバーシップ・プロバイダに接続するか、パスワードの暗号化を試みるよりもはるかにクリーンです。 SSOの世界では、サインインをプロバイダーに委託することが一般的になっています。そのような場合には、あなたのアプリケーションデータベースにパスワード情報を保存しないでください。 – danludwig
olivehourありがとうございました。あなたのアドバイスで実装した解決策を上記で確認してください。 –