网站的身份验证

本文介绍了使用ASP.NET做网站时的身份验证问题。ASP.NET与IIS配合提供四种验证方式,选用Form方式适合网站需求。通过在web.config配置文件中定义身份验证规则,可控制哪些页面需验证、哪些可自由浏览,还给出了具体配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网站的身份验证

左直拳

前段时间用ASP.NET做一个网站,其中有个要求是网站里有些页面或功能需要用户登录后才能浏览或使用。

应该没有什么问题,因为ASP.NET提供了完善的身份验证服务。

ASP.NET IIS 一起使用以支持身份验证。有四种验证方式供君选择:NoneWindowsForm以及PassportPassport我不知道怎么用,而None又不知道有什么用,估计是逗你玩。用Form吧,系统会将未经身份验证的请求重定向到登录页,验证通过后,系统又自动转向此前请求的页面,正适合网站的要求。

“我,只用力士。”——国际影星娜塔莎·金丝姬。

现在问题是,怎样来控制哪些页面需要身份验证,哪些可以随便浏览?

身份验证在配置文件web.config里定义。在一个网站里,可能存在多个web.config。比如,根目录下有一个,某些子目录下又各有一个。按我的理解,web.config就好象面向对象里的类,具有继承和重载的特性,比如说,假设有个属性,子目录下的web.config没有重新定义,则继承根目录下的定义,否则以自己的定义为准。

这样子,针对我们这个网站的要求,只要在根目录下定义默认是允许所有人访问,然后再对特定的页面和子目录定义为拒绝匿名访问,不就搞定了吗?

假设有个网站web,其下有子目录s1s2,文件default.aspxinfo.aspxlogin.aspx。如图所示

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><lock aspectratio="t" v:ext="edit"></lock><shape id="_x0000_i1025" style="WIDTH: 237pt; HEIGHT: 90pt" type="#_x0000_t75"></shape><imagedata o:title="folder" src="file:///C:/DOCUME~1/chendaqu/LOCALS~1/Temp/msoclip1/01/clip_image001.gif"></imagedata>

要求根目录下文件info.aspx、子目录s1需要经过身份验证才可浏览,其余可自由浏览,则根目录web.config定义如下:

<system.web>

<authentication mode="Forms" >

<!-- 登陆页面为login.aspx -->

<forms name="web" loginUrl="login.aspx" protection="All" timeout="120"/>

</authentication>

<authorization>

<allow users="*" /> <!-- 允许所有用户 -->

</authorization>

</system.web>

<location path="s1"><!—子目录s1拒绝匿名访问,必须先登陆 -->

<system.web>

<authorization>

<deny users="?"/>

</authorization>

</system.web>

</location>

<location path="info.aspx"><!—页面info.aspx拒绝匿名访问,必须先登陆 -->

<system.web>

<authorization>

<deny users="?"/>

</authorization>

</system.web>

</location>

这样子设置后,info.aspx\s1\*.*都要先经过身份验证才可访问,否则,系统将自动转向登陆页面login.aspx

假如子目录s1里有文件例外,例如welcome.aspx不需要身份验证,则在s1/web.config里定义

<configuration>

<location path="welcome.aspx"> <!-- 允许所有用户 -->

<system.web>

<authorization>

<allow users="*"/>

</authorization>

</system.web>

</location>

</configuration>

左直拳的马桶(http://blog.youkuaiyun.com/leftfist/

左直拳的马桶(http://blog.youkuaiyun.com/leftfist/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值