新的ASP.NET MVC 4.0 提供了一个新的Membership Provider,叫SimpleMembership.
首先,我们建立一个新的solution
![ASP.NET MVC 4 SimpleMembership Provider (1)_第1张图片](http://img.e-com-net.com/image/product/66c2ac8812f3446bafd3f0892b14bae8.jpg)
![ASP.NET MVC 4 SimpleMembership Provider (1)_第2张图片](http://img.e-com-net.com/image/product/0aebdf79bf0d43488ccc51cdcf85db9b.png)
首先我们先看一下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的名字
打开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,
![ASP.NET MVC 4 SimpleMembership Provider (1)_第3张图片](http://img.e-com-net.com/image/product/3bc008e3e6fe4f15bc839392efd70af8.png)
因为我们使用的是code first, 这时候,我们要enable-migrations
![ASP.NET MVC 4 SimpleMembership Provider (1)_第4张图片](http://img.e-com-net.com/image/product/9a31e511e79747dea0d8a0aeb902f4df.jpg)
完成后
![](http://img.e-com-net.com/image/product/0bb01e36510e46e69a99a6f3e4a85d7f.png)
打开Migrations\Configuration.cs之后 你可以看到自动生成的class的代码是这样的。
![ASP.NET MVC 4 SimpleMembership Provider (1)_第5张图片](http://img.e-com-net.com/image/product/309b980e899741299ccf685663786c4f.png)
这时候,我们要修改一下里面的内容
首先,我们先引用
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");
-
}
要注意一点!
![](http://img.e-com-net.com/image/product/778c9904ba484ad7b9c2187c2f6b348d.png)
这一定要改成true
然后再Package Manager Console下运行 update-database –verbose来修改数据库。
![ASP.NET MVC 4 SimpleMembership Provider (1)_第6张图片](http://img.e-com-net.com/image/product/65cfb17d0a594c1fbe2700a13b10a019.jpg)
这时候我们检视一下数据库的状况
![ASP.NET MVC 4 SimpleMembership Provider (1)_第7张图片](http://img.e-com-net.com/image/product/0d74f196406943aaa3ffe160a76ae6d3.jpg)
可以看到,我们之前在Code First中init的那个user和role已经在数据库中了。
这时候,我们运行整个web程序,使用我们之前已经定义好的user/password, manager1 和password
![ASP.NET MVC 4 SimpleMembership Provider (1)_第8张图片](http://img.e-com-net.com/image/product/b2cae22e717f4a7ba6aa06d00de5fb71.jpg)
可以看到,我们已经login到这个网站中去了。
![ASP.NET MVC 4 SimpleMembership Provider (1)_第9张图片](http://img.e-com-net.com/image/product/31e20c0fbc634ffaa1a202005eb67020.jpg)
好了,让我们来测试一下Role的功能
当前角色是Admin的角色的话,我们会在Index页面显示一个秘密的信息
![ASP.NET MVC 4 SimpleMembership Provider (1)_第10张图片](http://img.e-com-net.com/image/product/59a6a35d1929493ba18a9beeaede806d.jpg)
打开Views\Home\Index.cshtml
我们添加如下代码
![ASP.NET MVC 4 SimpleMembership Provider (1)_第11张图片](http://img.e-com-net.com/image/product/38e73cc959d2433db9dd514ba5c135e7.png)
成功!