首页 > 编程 > .NET > 正文

ASP.NET实现匿名访问控制

2024-07-10 13:10:34
字体:
来源:转载
供稿:网友


  通过学习我掌握了两种控制方法,实现了对于网站的匿名访问控制,一个是通过iis实现,另一个是通过asp.net实现。个人感觉两种基本上可以实现的功能没有什么差别,不过通过asp.net实现的更易于管理和维护。

  对于通过iis的实现都比较清楚,可以对文件夹或单个文件(页面)设置访问权限,iis提供了“目录安全性”和“文件安全性”的设置方法。并可以通过直接设置不同访问人的权限。其中就提供了匿名访问的控制方法,这里不再细说。

  asp.net控制方法:

  首先介绍例子实现的效果,一个网站登陆以后可以将用户信息保存在一个cookie中,并标识用户是通过身份验证的,在访问其他页面的时候直接对用户的身份是否通过验证进行判断,如果通过即可继续访问页面,如果是一个未通过验证的匿名访问用户(即未登录用户)则将跳转到登陆页面提示用户登录。设置其中一个用户注册页面为可以匿名访问,因为业务逻辑上只有允许注册才能登陆。

  在登陆页面还是先对用户的用户名和密码进行验证,至于使用与数据库比对的方法还是到ad中验证等都可以,然后通过以下的方法将当前用户在cookie中标识为通过验证的用户,并跳转到用户跳转到登陆页之前请求的页面。

formsauthentication.redirectfromloginpage(username,createpersistentcookie);

  在用户直接请求的页面上我们使用如下的方法来验证用户。

context.user.identity.isauthenticated

  context:获取与该页关联的 system.web.httpcontext 对象

  user:为当前 http 请求获取或设置安全信息

  identity:获取当前用户的标识

  isauthenticated:获取一个bool值,该值指示是否验证了用户

  然后我们在web.config中进行安全设置。

    <authentication mode="forms">
        <forms loginurl="login.aspx"></forms>
</authentication>

  "forms" 您为用户提供一个输入凭据的自定义窗体(web 页),然后在您的应用程序中验证他们的身份。用户凭据标记存储在 cookie 中。

    <authorization>
        <deny users="?" />
    </authorization>

  deny表示禁止,users="?"表示匿名用户

  <location path="newuser.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
  </location>

  表示新用户注册页面newuser.aspx,可以允许任何人访问。这样就实现了对于匿名用户的访问控制。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表