使用Forms身份验证模式实现网站的身份验证

添加人:admin四级(1695分)   添加时间:2007-06-24    阅读次数:1049  收藏此教程

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

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

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

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

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

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

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

假设有个网站 web ,其下有子目录 s1 s2 ,文件 default.aspx info.aspx login.aspx

要求根目录下文件 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>

1页 第1上一页1下一页
相关的教程: Forms 身份验证
收藏此教程

当前平均分: 0.0(0 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: