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

首先,我们建立一个新的solution

首先我们先看一下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的名字

打开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,

因为我们使用的是code first, 这时候,我们要enable-migrations

完成后

打开Migrations\Configuration.cs之后 你可以看到自动生成的class的代码是这样的。

这时候,我们要修改一下里面的内容

首先,我们先引用

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

我们添加如下代码

成功!

ASP.NET MVC 4 SimpleMembership Provider (1)的更多相关文章

  1. ASP.NET MVC下的四种验证编程方式[续篇]

    在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...

  2. SimpleMembership,成员资格提供程序、 通用的提供者和新的 ASP.NET 4.5 Web 窗体和 ASP.NET MVC 4 模板

    ASP.NET MVC 4 互联网模板中添加一些新的. 非常有用的功能,构建 SimpleMembership.这些更改将添加一些很有特色,像很多更简单. 可扩展会员 API 和 OAuth 的支持. ...

  3. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  4. ASP.NET MVC Model元数据(三)

    ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...

  5. 第1章 (ASP.NET MVC简介)

    一.MVC概念 MVC由三部分组成:视图(View).模型(Model).控制器(Controller)组成 二.运用VS创建MVC 1.新建一个"解决方案" 2.在"解 ...

  6. 玩转Asp.net MVC 的八个扩展点

    MVC模型以低耦合.可重用.可维护性高等众多优点已逐渐代替了WebForm模型.能够灵活使用MVC提供的扩展点可以达到事半功倍的效果,另一方面Asp.net MVC优秀的设计和高质量的代码也值得我们去 ...

  7. 仅此一文让你明白ASP.NET MVC 之Model的呈现(仅此一文系列三)

    本文目的 我们来看一个小例子,在一个ASP.NET MVC项目中创建一个控制器Home,只有一个Index: public class HomeController : Controller { pu ...

  8. [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)

    我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户, ...

  9. [ASP.NET MVC 小牛之路]15 - Model Binding

    Model Binding(模型绑定)是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程.我们之前所有示例中传递给 Action 方法参数的对象都是在 Model Binding ...

随机推荐

  1. 分布式文件系统HDFS体系

    系列文件列表: http://os.51cto.com/art/201306/399379.htm 1.介绍 hadoop文件系统(HDFS)是一个运行在普通的硬件之上的分布式文件系统,它和现有的分布 ...

  2. 配置Outlook Anywhere2010

    防火墙只需要开放CAS的443端口,其他硬件防火墙也是如此,不需要开放其他额外端口(80也没有必要开通,如果都使用https的话) 1.CAS:服务器配置-申请证书(内部.外部CAS名称)2.CAS: ...

  3. rails中的语法

    1. erb文件中的语法说明 erb文件中常混合使用Ruby语言和html语言,以下为两种常见的格式 <% 写逻辑脚本(Ruby语法) %> <%= 直接输出变量值或运算结果 %&g ...

  4. Codeforces Round #136 (Div. 1)C. Little Elephant and Shifts multiset

    C. Little Elephant and Shifts Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/pro ...

  5. (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)

    /* * POJ_1159.cpp * * Created on: 2013年10月29日 * Author: Administrator */ #include <iostream> # ...

  6. 全面整理的C++面试题

    C++面试题 1.是不是一个父类写了一个virtual 函数,假设子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的. private 也被集成,仅仅事派生类没有 ...

  7. alue of type java.lang.String cannot be converted to JSONObject

    /** * 4.0以下系统处理掉返回json的BOM头 * * @param jsonStr * @return */ public static String getJson(String json ...

  8. 可以将一些配置信息已json格式存在数据库中读取的时候序列化。

    public partial class json序列化 : System.Web.UI.Page    {        protected void Page_Load(object sender ...

  9. 终端I/O之终端窗口的大小

    大多数UNIX系统都提供了一种功能,可以对当前终端窗口的大小进行跟踪,在窗口大小发生变化时,使内核通知前台进程组.内核为每个终端和伪终端保存一个winsize结构: Struct winsize { ...

  10. (转)Asp.Net MVC中身份认证和授权

    MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...