ASP.NET MVC4 SimpleMembership 基于角色的权限管理机制(一)--基本配置与使用
2014-06-12 15:36
639 查看
以前一直在用MVC3,前段使用学习了MVC4,在做一个小示例的时候,想给注册的用户分配角色,从而实现操作访问权限,自己还是按照MVC3中的做法,可是后来发现已经不行了,甚至创建的数据库都完全不一样,查一下资料才发现原来在MVC4中微软提供了一个新的机制--SimpleMembership!本文就来简单叙述一下如何使用它!
在此句后面添加:
接着,调试运行程序,试着注册一个用户,注册完成后,浏览数据库的用户表,会有两个用户,一个是你刚刚通过页面注册的,另一个是上面这段代码加进去的,并且名为abcd的用户属于Admin角色!
试着用abcd用户登录,然后访问关于链接,能看到一切正常,但是用另外一个用户访问,会被重定向到登陆页面!
那么到这里,最基本的东西就做完了!
这篇文章是新手学习MVC4的笔记,亦或是备忘录,如有不对,欢迎指正,共同进步!
第一步、创建一个MVC4的Internet项目;
第二步、配置Web.Config文件:
1、在<system.web>节点中配置以下节点:
<membership defaultProvider="MyMembershipProvider"> <providers> <clear/> <add name="MyMembershipProvider" connectionStringName="DefaultConnection" applicationName="/" type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData"/> </providers> </membership> <roleManager enabled="true" defaultProvider="MyRoleProvider"> <providers> <clear/> <add name="MyRoleProvider" connectionStringName="DefaultConnection" type="WebMatrix.WebData.SimpleRoleProvider,WebMatrix.WebData"/> </providers> </roleManager>
2、根据自己的需要,配置连接字符串
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-SimpleMembership;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-SimpleMembership.mdf" providerName="System.Data.SqlClient" /> </connectionStrings>
3、注意以下的配置,不要更改,直接使用默认值:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" /> </authentication>
第三步、运行程序
调试运行程序,点击注册链接,然后进入数据库中,没出意外的话,已经自动创建好了数据库以及对应的表,数据库的名字就是你的连接字符串中设置的名字;第四步:试着使用一下SimpleMembership
在项目的InitializeSimpleMembershipAttribute.cs文件中的SimpleMembershipInitializer类的构造函数中,找到如下的语句:WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
在此句后面添加:
<span style="white-space:pre"> </span>SimpleRoleProvider roles = (SimpleRoleProvider)Roles.Provider; //判断当前是否包含了名为Admin的角色,如果没有则添加 if (!roles.RoleExists("Admin")) { roles.CreateRole("Admin"); } SimpleMembershipProvider memberships = (SimpleMembershipProvider)Membership.Provider; //判断是否注册了abcd这个用户,如果没有则注册,有则检查角色属性 if (memberships.GetUser("abcd", false) == null) { memberships.CreateUserAndAccount("abcd", "abcd123"); } //获取abcd的角色列表,看看是否包含Admin角色,如果不包含,则添加到Admin角色中,注意这里得引用System.Linq命名空间 if (!roles.GetRolesForUser("abcd").Contains("Admin")) { roles.AddUsersToRoles(new[] { "abcd" }, new[] { "Admin" }); }
接着,调试运行程序,试着注册一个用户,注册完成后,浏览数据库的用户表,会有两个用户,一个是你刚刚通过页面注册的,另一个是上面这段代码加进去的,并且名为abcd的用户属于Admin角色!
第五步、最后的测试
有了上面的这些,我们试着在HomeController的About操作上做如下更改:[Authorize(Roles="Admin")] public ActionResult About() { ViewBag.Message = "只有拥有Admin角色用户才能访问!"; return View(); }
试着用abcd用户登录,然后访问关于链接,能看到一切正常,但是用另外一个用户访问,会被重定向到登陆页面!
那么到这里,最基本的东西就做完了!
这篇文章是新手学习MVC4的笔记,亦或是备忘录,如有不对,欢迎指正,共同进步!
相关文章推荐
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理
- Jenkins配置基于角色的项目权限管理--转
- Jenkins配置基于角色的项目权限管理--转
- jenkins配置基于角色的项目权限管理设置步骤
- Jenkins配置基于角色的项目权限管理--转
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
- Jenkins配置基于角色的项目权限管理
- 使用Apache shiro进行权限管理时如何对同一个URL配置多个角色的或关系
- 基于角色权限的界面配置管理
- Jenkins配置基于角色的项目权限管理
- Struts Menu中基于角色的权限管理
- Acegi+hibernate 动态实现基于角色的权限管理
- OD端//使用SQLyou数据库管理工具-------一次性 图文告诉你怎么改GM权限/角色属性/调经验金钱及掉宝等
- 基于角色管理(RBAC)的权限系统