たくさんの記事やフォーラムを読んでいますが、それでも理解できません... Visual Studio Express 2012 for Webと、MVC4 + Razor + EntityFrameworkCodeFirstを使用してインターネットアプリケーションを構築しています。
私が理解している限り、SimpleMembershipを使用したMVC4でのユーザーとロールの管理は、以前のバージョンよりも簡単で、かなり単純なはずです。
私のアプリケーションでは、特定のユーザーグループのみを承認する必要があります(たとえば、管理者のみが特定のページにアクセスできます)。これは、[Authorize]アノテーションにパラメーターを渡すことによって行われることを理解しています:[Authorize(Roles = "Admins")]しかし、これらのロールを作成するにはどうすればよいですか、またユーザーを追加するにはどうすればよいですか?
認証を要求するために、コントローラーメソッドの上にアノテーション[Authorize](パラメーターなし)を追加しました。これは、追加の構成を行ったり、他に何も追加したりすることなく機能しました。また、自動的に作成されたデータベースを見ると、UserId列とRoleId列を持つwebpages_UsersInRolesという名前のテーブルがあります。これらすべては、すべてがセットアップされて使用できるように見えるので、これは非常に単純なタスクでなければならないと私に思わせますが、私はどのように理解することができません;)
私がこれまでに試したのは(そしてそれは機能しませんでした)これでした:DropCreateDatabaseIfModelChangesから継承する「DataContextDbInitializer」クラスがあります。Seedメソッドはそのクラス内でオーバーライドされ、これを追加しました(System.Web.Securityをインポートする必要がありました)。
Membership.CreateUser("user1", "123456");
Roles.CreateRole("Admins");
Roles.AddUserToRole("user1", "Admins");
また、このタグをWeb.configファイルのタグに挿入しました。
<roleManager
enabled="true"
cacheRolesInCookie="true" >
</roleManager>
試してみるために、コントローラーのアクションメソッドの上に[Authorize(Roles = "Admins")]を追加し、「admin」としてログインしてそのメソッドにアクセスしようとしましたが、運が悪かったです:(
他に何が欠けているのかわかりません...誰かが私を狂わせているので、誰かがこれを案内してくれると本当に嬉しいです:P
ありがとう!