asp.net 身份验证(分目录验证篇)

 更新时间:2009年05月27日 01:49:19   作者:  
在上一篇博文《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只拥有查看权限,这种功能就无法实现了。

相关文章

  • asp.net DropDownList自定义控件,让你的分类更清晰

    asp.net DropDownList自定义控件,让你的分类更清晰

    记得上次做论坛,一个功能就是合并2个子板块的主题,用级联的2个DropDownList也是可以完成,那样我们要合并的时候总共就有4个DropDownList控件,觉得界面友好
    2011-10-10
  • ASP.NET Core SignalR中的流式传输深入讲解

    ASP.NET Core SignalR中的流式传输深入讲解

    这篇文章主要给大家介绍了关于ASP.NET Core SignalR中流式传输的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • ASP.NET Core中使用LazyCache的全过程

    ASP.NET Core中使用LazyCache的全过程

    这篇文章主要给大家介绍了关于ASP.NET Core中使用LazyCache的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • ASP.NET中相对路径的使用总结

    ASP.NET中相对路径的使用总结

    在.cs页面中输入Response.Write(Request.MapPath(1.jpg))这可以输出图片的物理路径也就是这张图片在服务器上存放的具体路径,下面为大家讲解下相对路径的应用
    2013-08-08
  • .NET读取Excel文件的三种方法的区别

    .NET读取Excel文件的三种方法的区别

    最近研究了如何使得ASP.NET读取Excel文件更加高效呢,现总结如下:
    2013-03-03
  • win10下vs2015配置Opencv3.1.0详细过程

    win10下vs2015配置Opencv3.1.0详细过程

    这篇文章主要为大家详细介绍了win10下vs2015配置Opencv3.1.0的详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • [Asp.Net Core]用Blazor Server Side实现图片验证码

    [Asp.Net Core]用Blazor Server Side实现图片验证码

    这篇文章主要介绍了如何用Blazor Server Side实现图片验证码,文中讲解非常详细,代码帮助大家更好理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录

    ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录

    本文主要介绍了QQ、微信、新浪微博OAuth2.0授权登录的示例,主要就是GET、POST远程接口,返回相应的数据,这里列出相关的代码,供大家参考。
    2016-03-03
  • .NetCore实现上传多文件的示例详解

    .NetCore实现上传多文件的示例详解

    本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理+ajax提交+上传进度,对大家非常有帮助,感兴趣的朋友跟随小编一起学习吧
    2017-04-04
  • ASP.NET MVC 数据验证及相关内容

    ASP.NET MVC 数据验证及相关内容

    这篇文章主要介绍了ASP.NET MVC 数据验证及相关内容的相关资料,需要的朋友可以参考下
    2014-10-10

最新评论