私はASP.NET MVC4の新人です。空のMVC4プロジェクトテンプレートを作成し、それにASP.NETメンバーシッププロバイダーを追加しようとしていますが、どうすればよいのかわかりません。私はGoogleで検索していますが、すべてのデモはインターネットアプリケーションプロジェクトテンプレートを使用しています。
私はこの質問が良くないことを知っていますが、すでに2日間費やしています。
このためのアドバイスやチュートリアルを教えてください。
更新
Nesim Razonのアドバイスに従って、フォーム認証セクションをMVC4 Webアプリケーション(インターネットアプリケーションテンプレート)から空のプロジェクトにコピーして貼り付けます。しかし今、私は例外を受け取ります
このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。
[InitializeSimpleMembership]
public class HomeController : Controller
{
public ActionResult Index()
{
WebSecurity.CreateUserAndAccount("Name", "Password"); // Exception is thrown from there.
return View();
}
}
Web.configファイルに次のディレクティブも追加されています。
<add key="enableSimpleMembership" value="true" />
次のNugetパッケージを追加する必要があります。
Microsoft.AspNet.WebPages.OAuth
注:このパッケージは、必要なすべての依存関係を自動的にインストールします。これはインストールされているすべてのnugetパッケージの詳細なリストです:
への参照を追加
それをテストするために、web.configファイルに以下を追加します(system.web
):
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
次の接続文字列を追加します
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-UnitTestQueries.UI-20121105001038;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-UnitTestQueries.UI-20121105001038.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
そして、私が行ったのは、インターネットテンプレートからコントローラー、モデル、フィルター、ビューをコピーし、名前空間などを変更して、稼働状態になるまで実行することでした。
これが結果です(スタイルなし)
ログイン前
登録
ログイン済み
空のテンプレート内にSimpleMembershipを設定するために必要な情報を取得するには、 SimpleMembership、メンバーシッププロバイダー、ユニバーサルプロバイダー、および新しいASP.NET 4.5 WebフォームとASP.NET MVC 4テンプレート を確認してください。
Scott Allenからの非常に素晴らしい投稿もチェックしたいです。
ASP.NET MVCの独自のメンバーシップシステムを構築する-パートI
そして
ASP NET MVC 5 Webアプリケーションの単純なメンバーシップ
https://www.youtube.com/watch?v=BsKcVbsMn6w
いったん開発されたプロジェクトにユーザー認証を実装することは非常に困難です。このビデオでは、最初から認証を実装していないプロジェクトでMicrosoftシンプルメンバーシップ機能を効果的に利用する方法を示しました。これを利用して、プロジェクトのどの段階でも認証機能を実装できます。
MVC 4インターネットテンプレートに含まれているシンプルメンバーシップではなくユニバーサルプロバイダーを使用する場合は、モバイルテンプレートを使用して新しいMVC 4プロジェクトを作成し、アカウントコントローラー+ビューをコピーして、web.configも更新します。正しいconnectionStringとForms Authセクションを使用して、問題ありません。