ASP.NET MVC 4 SimpleMembership Provider (1)

新的ASP.NET MVC 4.0 提供了一個新的Membership Provider,叫SimpleMembership.html

首先,咱們創建一個新的solutionweb

 

首先咱們先看一下web.config數據庫

  1. <connectionStrings>
  2.     <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" />
  3.  </connectionStrings>

 

在這裏咱們要注意一下,咱們連接的是visual studio 2012自帶的LocalDb,如需鏈接,請用(LocalDb)\v11.0做爲Server的名字ide

打開Web.config文件,加入一下內容測試

  1. <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  2.       <providers>
  3.         <clear/>
  4.         <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  5.       </providers>
  6. </roleManager>
  7. <membership defaultProvider="SimpleMembershipProvider">
  8.       <providers>
  9.         <clear/>
  10.         <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  11.       </providers>
  12. </membership>

 

打開AccountController.cs, 找到UserProfile 這個class網站

好比咱們加入一個自定義的屬性叫Address,spa

由於咱們使用的是code first, 這時候,咱們要enable-migrationscode

完成後htm

打開Migrations\Configuration.cs以後 你能夠看到自動生成的class的代碼是這樣的。blog

這時候,咱們要修改一下里面的內容

首先,咱們先引用

using WebMatrix.WebData;

using System.Web.Security;

修改下面的代碼

  1. public Configuration()
  2.         {
  3.             AutomaticMigrationsEnabled = true;
  4.         }
  5.  
  6.         protected override void Seed(MVC4SimpleMembershipSample.Models.UsersContext context)
  7.         {
  8.             // This method will be called after migrating to the latest version.
  9.  
  10.             // You can use the DbSet<T>.AddOrUpdate() helper extension method
  11.             // to avoid creating duplicate seed data. E.g.
  12.             //
  13.             // context.People.AddOrUpdate(
  14.             // p => p.FullName,
  15.             // new Person { FullName = "Andrew Peters" },
  16.             // new Person { FullName = "Brice Lambson" },
  17.             // new Person { FullName = "Rowan Miller" }
  18.             // );
  19.             //
  20.  
  21.             WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
  22.  
  23.             //create roles
  24.             if (!Roles.RoleExists("Admin"))
  25.                 Roles.CreateRole("Admin");
  26.  
  27.             //create a user called manager 1
  28.             if (!WebSecurity.UserExists("manager1"))
  29.                 WebSecurity.CreateUserAndAccount("manager1", "password", new { Address = "123 Evergreen Ave" });
  30.  
  31.             //assign manager1 to Admin role
  32.             if (!Roles.GetRolesForUser("manager1").Contains("Admin"))
  33.                 Roles.AddUserToRole("manager1", "Admin");
  34.         }

 

要注意一點!

這必定要改爲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

咱們添加以下代碼

成功!

相關文章
相關標籤/搜索