博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net中的窗体身份验证(分目录验证篇)
阅读量:4626 次
发布时间:2019-06-09

本文共 1597 字,大约阅读时间需要 5 分钟。

  在上一篇博文《》中的身份验证虽然很简单,但是有一个缺点,就是访问整个网站都必须要经过身份验证,而事实上,很多网站都不会这么要求的。

    比如一个新闻系统,通常只有在发布新闻的网页才需要身份验证,而用户浏览新闻是不需要身份验证的。对于这种情况,就要针对不同的网页来进行身份验证了。

    要实现这种功能,也只要将《》稍作修改,具体操作方式如下所示:

 

    第一步、创建一个子文件夹,将所有要验证的网页都放在这个文件夹中,设置该文件夹的名字为“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="?"/>”代表允许所有的匿名用户。注意此处与《》的区别,在《》中,此处使用的是“<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子目录下的其他网页,就不需要使用进行身份验证了。单击提交按钮后的代码与《》中的代码类似,在此就不再赘述了。

 

 

 

相关链接:

1、

2、

3、

4、

5、

6、

7、

8、

9、

10、

11、

 

 

 

    本例的下载地址为:或

 

    本例在VS2005中测试通过。

    本例的优点:过程和代码都十分简单,可以指定某个目录中的网页进行身份验证,而不是整个网站的所有网站都进行身份验证。

    本例的缺点:身份验证过于简单,验证结果只有两种,一种是没有通过验证,因而拒绝访问;一种是通过验证,可以访问。如果想对权限进行细分,比较说管理员A拥有添加权限,而管理员B只拥有查看权限,这种功能就无法实现了。

转载于:https://www.cnblogs.com/alianhot/archive/2012/03/21/2409267.html

你可能感兴趣的文章
Php中"{}"大括号的用法总结(转)
查看>>
JavaScript内存优化
查看>>
BZOJ1059: [ZJOI2007]矩阵游戏(二分图匹配)
查看>>
P3385 【模板】负环
查看>>
URI、URL 和 URN的区别
查看>>
根据表达式序列(前缀、中缀、后缀)构建表达式树
查看>>
mysql性能优化
查看>>
【SqlServer系列】语法定义符号解析
查看>>
Color Length UVA - 1625
查看>>
TLS/SSL
查看>>
zoj2319Beautiful People Dp
查看>>
图片加载 背景色块问题
查看>>
Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
查看>>
搭建git服务器
查看>>
iOS之UIDynamic UI动力学使用步骤
查看>>
poj 2498 动态规划
查看>>
Windows Phone 7中使用PhoneApplicationService类保存应用程序状态
查看>>
MySql数据库的下载和安装卸载
查看>>
JDBC接口核心的API
查看>>
用Python编写WordCount程序任务
查看>>