当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net 身份验证(分目录验证篇)

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

ASP.NET 中的 asp.net 身份验证(分目录验证篇)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 88 ::
收藏到网摘: n/a

在上一篇博文《asp.net中的身份验证(最简单篇)》中的身份验证虽然很简单,但是有一个缺点,就是访问整个网站都必须要经过身份验证,而事实上,很多网站都不会这么要求的。 比如一个新闻系统,通常只有在发布新闻的网页才需要身份验证,而用户浏览新闻是不需要身份验证的。对于这种情况,就要针对不同的网页来进行身份验证了。
要实现这种功能,也只要将《asp.net中的身份验证(最简单篇)》稍作修改,具体操作方式如下所示:
第一步、创建一个子文件夹,将所有要验证的网页都放在这个文件夹中,设置该文件夹的名字为“admin”。
第二步、修改web.config文件。
1、在<system.web>和</system.web>中找到<authentication>节,将其改为“<authentication mode="Forms"><forms loginUrl="~/admin/AdminLogin.aspx"></forms></authentication>”,其中Forms代表使用表单认证;loginUrl用于指定登录页面URL,个人比较喜欢将登录页面也放在admin文件夹中,所以在此要指定登录页面URL,如果还是想使用根目录中的login.aspx页面作为登录页面,则可以省略<forms>节。
2、在<system.web>和</system.web>中添加“<authorization><allow users="?"/></authorization>”,其中“<allow users="?"/>”代表允许所有的匿名用户。注意此处与《asp.net中的身份验证(最简单篇)》的区别,在《asp.net中的身份验证(最简单篇)》中,此处使用的是“<deny users="?"/>”,用于拒绝所有匿名用户。
第三步、在需要身份验证的子文件夹中添加一个web.config文件,在本例中为在“admin”文件夹中添加该文件。
第四步、修改需要身份验证的子文件夹中的web.config文件,在本例中为“admin”文件夹中的web.config文件。
在<system.web>和</system.web>中,添加“<authorization><deny users="?"/></authorization>”,由于在根目录中的web.config文件中声明了允许所有匿名用户访问,所以在不能允许匿名用户访问的子文件夹中,必须要使用“<deny users="?"/>”来拒绝匿名用户访问。另外,在子文件夹中的web.config文件中可以没有<authentication>节。
第五步、在“admin”子文件夹中创建AdminLogin.aspx文件。如果在第二步中没有使用<forms>节来指定用户登录页面,则在网站根目录下创建login.aspx文件。
第六步、在AdminLogin.aspx文件(或login.aspx文件)中验证身份,如果身份验证通过,使用FormsAuthentication.SetAuthCookie()为用户创建一个身份验证的票据,并将其添加到Cookie中。以后,再访问网站中admin子目录下的其他网页,就不需要使用进行身份验证了。单击提交按钮后的代码与《asp.net中的身份验证(最简单篇)》中的代码类似,在此就不再赘述了。
本例在VS2005中测试通过。
本例的优点:过程和代码都十分简单,可以指定某个目录中的网页进行身份验证,而不是整个网站的所有网站都进行身份验证。
本例的缺点:身份验证过于简单,验证结果只有两种,一种是没有通过验证,因而拒绝访问;一种是通过验证,可以访问。如果想对权限进行细分,比较说管理员A拥有添加权限,而管理员B只拥有查看权限,这种功能就无法实现了。