上篇讲到如何配置membership以及ASP.NET Forms身份验证,本篇将对权限控制部分,作一个详细的解释。html
在全部的基本配置都完毕后,咱们还须要配置哪些目录容许被匿名访问,哪些是须要用户登陆后容许访问的页面。web
首先:咱们在项目中创建一个admin文件夹,在admin文件夹中添加一个web.config文件,而后在其中的<system.web>节点下面添加以下代码:app
而后咱们在admin目录下再添加一个页面,而后访问该页面,看一下效果。若是您按照咱们上篇所说的内容所有正确配置了,那么你会发现,页面并无显示出来,而是跳转到了咱们以前在<authentication>下<forms>节点的LoginUrl属性所指向的页面,要求登陆!这不就是咱们须要的效果吗?ide
如今来解释一下上面配置的含义:post
<allow>节点:顾名思义就是容许访问的意思,<allow users="admin"/>就是容许用户名为"admin"的用户访问。编码
<deny>节点:就是禁止访问。这里用到了一个通配符“*”,通配符有两个:*表明全部用户,还有一个“?”表明全部匿名用户。因此<deny users="*"/>就是不容许全部用户访问的意思啦,固然若是是:<deny users="?"/>那意思就是不容许全部匿名用户访问。url
须要说明的是:全部的配置都是按照从上到下的顺序来匹配的,一但匹配成功,就再也不向下匹配。举个例子:spa
ASP.NET首先检测当前登陆的用户名=="admin"?若是等于则不继续判断,直接容许该用户访问。若是不等于则继续判断当前登陆的用户名=="zhangsan"等于,则容许访问,不等于则接着向下,读取到了<deny users="*"/>这个配置,拒绝全部用户访问,跳转到LoginUrl指定的页面要求从新登陆。code
但是若是这样,只能实现目录一级的权限控制,若是要控制某个文件的访问权限,又该如何作呢?难道非得把这个文件放到一个文件夹中,而后再添加web.config进行控制么?答案是否认的,对于单个文件的访问控制,ASP.NET也有相应的配置:orm
看上面这个配置,咱们能够在<system.web>节点之上(必须是上面)再增长一个<location>节点,经过path属性指明location内的配置是单独针对哪一个文件便可。具体内容我就很少说了,想必你们也都看得懂。不过须要注意的一点就是:location节点能够有多个。这意味着同一个目录下的不一样文件能够有不一样的访问权限。
好了,配置到这里算是完成一多半了。还有一个问题就是:若是咱们的用户比较多,那么须要在配置文件中把这些用户所有罗列其中。而且之后添加 了新用户,还得继续修改配置,太麻烦了!该怎么办呢?通用的作法就是引入角色的概念。给全部的用户分配一个角色,好比:users,admin等。而后我 们只须要控制这些角色的访问权限便可。之后添加了新用户只需给这个新用户分配角色,而不用去修改配置,实在是方便。其实,membership也提供了角 色的概念,只须要简单的配置一下就能够实现了。
要实现角色功能,很是简单,咱们仍是去machine.config的<system.web>节点下面找 到<roleManager>节点,而后整个节点复制过来到web.config中去,通常会有两个<add>子结点,咱们删除 一个,留下一个就能够了。所有内容以下:
这个配置比较简单,各项配置和前面配置都同样,再也不多说。稍微修改一下:
注意:这个roleManager多了个属性enable="true",这是由于角色管理默认状况下是关闭的,因此咱们必须得设置为开启才行。
好了,全部的配置到这里算是所有结束了。欲知后事如何且听下回分解:《ASP.NET身份验证机制membership入门——编码篇》。