现在的位置: 首页 > 综合 > 正文

浅析网站授权机制

2011年07月10日 ⁄ 综合 ⁄ 共 2201字 ⁄ 字号 评论关闭

在这一篇博文中,主要将会介绍一下 ASP.NET 网站的授权机制,

并且前提是验证方式为 Forms 验证模式,

其中主要涉及到的内容是 web.config 中的 authorization(授权)节和

ASP.NET 网站管理工具中的访问规则这一块,

首先还是从 ASP.NET 网站管理工具开始吧,

毕竟对于有可视化界面的东西还是容易很多的,

image

先来创建几个访问规则吧,前面曾经提到过,对于访问规则的建立时以目录为单位的,

也就是只能对一个一个的目录进行创建访问规则,而不能对单个的文件创建访问规则,

还有需要提醒的是,在我们一般的应用程序中,

我们都只有在根目录下面会有一个 web.config,

但是如果我对根目录下的其他子目录又创建了新的访问规则,

那么在这个子目录中会出现一个新的 web.config 文件,其实反过来想想呢也正确,

因为这个目录要保存可以访问这个目录的用户和角色和

不能访问这个目录的用户和角色,

所以出现一个新的 web.config 也是理所当然的事情了,

既然这个新的 web.config 是用来管理权限的,

那么理所当然的在里面就会记录那些用户和角色可以访问,

那些用户和角色是不能够访问的,

所以我先定义了一个子目录叫做 TestPage 并且在里面定义了一个页面,

image

然后我打开 ASP.NET 网站管理工具,切换到访问规则管理块中,

在左栏中选中 TestPage 这个目录,添加一个访问规则,

image

然后再给角色 Admin 也添加允许的权限,而其他的所有用户均添加拒绝权限,

添加完成权限后可以得到对于 TestPage 子目录下的权限集合为

image

同时再来看解决方案中的 TestPage 子目录下,可以发现多了一个 web.config 文件

image

打开来看,便会发现我们在 ASP.NET 网站管理工具中做的设置

(允许角色SuperAdmin 和 Admin 访问,而其他用户一律不允许访问)

全部被保存在这个 web.config 中了。

image

接下来就是要为根目录创建访问规则了,创建的规则如下,

(允许角色 Admin ,SuperAdmin 和 User 访问,而其他用户则一律拒绝访问)

image

在 ASP.NET 网站管理工具中设置好访问规则后再来看根目录下的 web.config 文件,

image

可以发现在 ASP.NET 网站管理工具中作的设置也全部被保存在了 web.config 中了,

接下来就要验证这些权限是否管用了,

不过在此之前还是先看角色中的用户吧,

首先在 SuperAdmin 中只有一个用户 XiaoZhen,

然后是 Admin 中有两个用户 SuBao 和 SuHa

再是 User 中有两个用户 ChengYan 和 ChenJing

而 MaHan , LiZengXu , QiuHanChang 则不属于任何一个角色,

先来测试角色 User 中的用户和不属于任何一个角色的用户是

否能够访问子目录 TestPage 中的 Demo__14.aspx

(结果应该是不能够访问的)

直接浏览 TestPage 子目录下的 Demo__14.aspx ,

由于没有登陆,所以会跳转到 Login.aspx 页面上来,

然后我以 User 角色中的 ChenJing 登陆,

image

可以发现无法自动跳转回 Demo__14.aspx 页面而是停留在 Login.a.spx 页面上,

如果在浏览器中强行输入

http://localhost:1071/Demo__14.aspx 来转到页面将发生错误

弹出提示说所访问的页面不存在(说明拒绝了角色 User 中的用户进行访问)

image

然后我再以不属于任何一个角色的普通用户 MaHan 登陆,

经测试,结果和上面的是一样的,为了节省页面就不列出来了,

然后我再以角色 Admin 和 SuperAdmin 中的用户登录

(结果应该是可以访问的,因为访问规则中允许这两个角色进行访问)

(我仅仅测试 SuHa,其他的结果也是一样的,就不列出来了)

image

可以发现登录后会自动跳转到 Demo__14.aspx 页面上,说明是允许访问的

image

经过了上面的测试,

可以证明在 TestPage 这个子目录下面的 web.config 中进行的权限设置,

确实是起作用了的,而且是正确的(要是不正确那就麻烦大了)。

接下来就是要证明根目录下的 web.config 中的授权设置也是正确的。

对于根目录下的 web.config ,

其授权配置是允许 Admin ,SuperAdmin ,User 这三个角色中的用户进行访问,

而其他的用户是不允许访问的,

在这里我只测试一个 User 中的成员 ChenJing 和

一个不属于这三个角色的成员 MaHan,

先测试 ChenJing 吧

直接运行根目录下的 Demo__13.aspx 页面,

image

发现是可以进行访问的,也就是说测试成功

image

再来测试一个失败的例子 – MaHan

image

登录后,会发现任然停留在登陆页,而不会自动跳转到 Demo__13.aspx 页面上,

这表明这个 Demo__13.aspx 页面对当前登陆的用户是设置了拒绝权限的。

image 

通过上面的这些解释和测试,我想,这个授权机制还是有了一个基本的了解的,

不过授权机制也并不是只有上面这一种,

因为上面的授权机制是有前提的,就是验证模式必须为 Forms 验证,

如果是 Windows 验证模式的话,则授权机制则又不同,

说实在的,我自己也还不晓得怎么弄(嘿嘿),

不过呢,Forms 机制差不多已经包含了 Windows 验证模式了,

所以差不多只要掌握 Forms 验证模式就 OK 了。

 

                                                        2010—2—07

 

抱歉!评论已关闭.