新的ASP.NET MVC 4.0 提供了一個新的Membership Provider,叫SimpleMembership.html
首先,咱們創建一個新的solutionweb
首先咱們先看一下web.config數據庫
-
<connectionStrings>
-
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MVC4SimpleMembershipSample-20130911133958;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MVC4SimpleMembershipSample-20130911133958.mdf" providerName="System.Data.SqlClient" />
-
</connectionStrings>
在這裏咱們要注意一下,咱們連接的是visual studio 2012自帶的LocalDb,如需鏈接,請用(LocalDb)\v11.0做爲Server的名字ide
打開Web.config文件,加入一下內容測試
-
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
-
<providers>
-
<clear/>
-
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
-
</providers>
-
</roleManager>
-
<membership defaultProvider="SimpleMembershipProvider">
-
<providers>
-
<clear/>
-
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
-
</providers>
-
</membership>
打開AccountController.cs, 找到UserProfile 這個class網站
好比咱們加入一個自定義的屬性叫Address,spa
由於咱們使用的是code first, 這時候,咱們要enable-migrationscode
完成後htm
打開Migrations\Configuration.cs以後 你能夠看到自動生成的class的代碼是這樣的。blog
這時候,咱們要修改一下里面的內容
首先,咱們先引用
using WebMatrix.WebData;
using System.Web.Security;
修改下面的代碼
-
public Configuration()
-
{
-
AutomaticMigrationsEnabled = true;
-
}
-
-
protected override void Seed(MVC4SimpleMembershipSample.Models.UsersContext context)
-
{
-
// This method will be called after migrating to the latest version.
-
-
// You can use the DbSet<T>.AddOrUpdate() helper extension method
-
// to avoid creating duplicate seed data. E.g.
-
//
-
// context.People.AddOrUpdate(
-
// p => p.FullName,
-
// new Person { FullName = "Andrew Peters" },
-
// new Person { FullName = "Brice Lambson" },
-
// new Person { FullName = "Rowan Miller" }
-
// );
-
//
-
-
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
-
-
//create roles
-
if (!Roles.RoleExists("Admin"))
-
Roles.CreateRole("Admin");
-
-
//create a user called manager 1
-
if (!WebSecurity.UserExists("manager1"))
-
WebSecurity.CreateUserAndAccount("manager1", "password", new { Address = "123 Evergreen Ave" });
-
-
//assign manager1 to Admin role
-
if (!Roles.GetRolesForUser("manager1").Contains("Admin"))
-
Roles.AddUserToRole("manager1", "Admin");
-
}
要注意一點!
這必定要改爲true
而後再Package Manager Console下運行 update-database –verbose來修改數據庫。
這時候咱們檢視一下數據庫的情況
能夠看到,咱們以前在Code First中init的那個user和role已經在數據庫中了。
這時候,咱們運行整個web程序,使用咱們以前已經定義好的user/password, manager1 和password
能夠看到,咱們已經login到這個網站中去了。
好了,讓咱們來測試一下Role的功能
當前角色是Admin的角色的話,咱們會在Index頁面顯示一個祕密的信息
打開Views\Home\Index.cshtml
咱們添加以下代碼
成功!