ASP.NET MVC 4 SimpleMembership Provider (1)
新的ASP.NET MVC 4.0 提供了一个新的Membership Provider,叫SimpleMembership.
首先,我们建立一个新的solution


首先我们先看一下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,

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

完成后

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

这时候,我们要修改一下里面的内容
首先,我们先引用
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
我们添加如下代码

成功!
ASP.NET MVC 4 SimpleMembership Provider (1)的更多相关文章
- ASP.NET MVC下的四种验证编程方式[续篇]
在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...
- SimpleMembership,成员资格提供程序、 通用的提供者和新的 ASP.NET 4.5 Web 窗体和 ASP.NET MVC 4 模板
ASP.NET MVC 4 互联网模板中添加一些新的. 非常有用的功能,构建 SimpleMembership.这些更改将添加一些很有特色,像很多更简单. 可扩展会员 API 和 OAuth 的支持. ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- ASP.NET MVC Model元数据(三)
ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...
- 第1章 (ASP.NET MVC简介)
一.MVC概念 MVC由三部分组成:视图(View).模型(Model).控制器(Controller)组成 二.运用VS创建MVC 1.新建一个"解决方案" 2.在"解 ...
- 玩转Asp.net MVC 的八个扩展点
MVC模型以低耦合.可重用.可维护性高等众多优点已逐渐代替了WebForm模型.能够灵活使用MVC提供的扩展点可以达到事半功倍的效果,另一方面Asp.net MVC优秀的设计和高质量的代码也值得我们去 ...
- 仅此一文让你明白ASP.NET MVC 之Model的呈现(仅此一文系列三)
本文目的 我们来看一个小例子,在一个ASP.NET MVC项目中创建一个控制器Home,只有一个Index: public class HomeController : Controller { pu ...
- [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)
我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户, ...
- [ASP.NET MVC 小牛之路]15 - Model Binding
Model Binding(模型绑定)是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程.我们之前所有示例中传递给 Action 方法参数的对象都是在 Model Binding ...
随机推荐
- Codeforces Round #338 (Div. 2) A. Bulbs 水题
A. Bulbs 题目连接: http://www.codeforces.com/contest/615/problem/A Description Vasya wants to turn on Ch ...
- TP复习16
'APP_GROUP_LIST' => 'Home,Admin', //项目分组设定'DEFAULT_GROUP' => 'Home', //默认分组 开分组复制上面 AjaxReturn
- [Angular 2] Move and Delete Angular 2 Components After Creation
After the original order is set, you can still leverage methods on the Angular 2 ViewContainer to re ...
- [Express] Level 3: Massaging User Data
Flexible Routes Our current route only works when the city name argument matches exactly the propert ...
- python类型转换、数值操作(转)
最近学习python语言,碰到数据类型间的转换问题.看到一篇文章总结的挺详细,收藏之备用. 类型转换 代码 Code highlighting produced by Actipro CodeHigh ...
- linux 内核参数VM调优 之 参数调节和场景分析
1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...
- 从实验室搬到宿舍后可以上QQ但打不开网页
如果你是属于如标题这种情况:也就是从实验室换到宿舍或者从宿舍换到实验室,在之前的地方可以上网,但换了地方后就出现只能上QQ而不能打开网页的情况.此时,首先考虑DNS配置,很有可能是因为你搬到了宿舍,但 ...
- [STAThread]的含义
Posted on 2007-07-07 10:06 桦林 阅读(33100) 评论(10) 编辑 收藏 [STAThread]STAThread:Single Thread Apar ...
- LeetCode14 Longest Common Prefix
题意: Write a function to find the longest common prefix string amongst an array of strings. (Easy) 这两 ...
- sqoop1.99.4安装与简介
1.什么是sqoop clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具 2.版本及其区别 现在分为sqoop1和sqoop2 1)架构图(sqoop1和hadoo ...