您的位置:首页 > 编程语言 > ASP

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

2014-06-12 15:36 639 查看
以前一直在用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角色!

第五步、最后的测试

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

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

return View();
}


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

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

这篇文章是新手学习MVC4的笔记,亦或是备忘录,如有不对,欢迎指正,共同进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: