ASP.NET MVC4 SimpleMembership 基于角色的权限管理机制(一)--基本配置与使用

以前一直在用MVC3,前段使用学习了MVC4,在做一个小示例的时候,想给注册的用户分配角色,从而实现操作访问权限,自己还是按照MVC3中的做法,可是后来发现已经不行了,甚至创建的数据库都完全不一样,查一下资料才发现原来在MVC4中微软提供了一个新的机制--SimpleMembership!本文就来简单叙述一下如何使用它!

第一步、创建一个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角色!

第五步、最后的测试

有了上面的这些,我们试着在HomeControllerAbout操作上做如下更改:

 

        [Authorize(Roles="Admin")]
        public ActionResult About()
        {
            ViewBag.Message = "只有拥有Admin角色用户才能访问!";
 
            return View();
        }

试着用abcd用户登录,然后访问关于链接,能看到一切正常,但是用另外一个用户访问,会被重定向到登陆页面!

那么到这里,最基本的东西就做完了!


这篇文章是新手学习MVC4的笔记,亦或是备忘录,如有不对,欢迎指正,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值