马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

ASP.NET安全机制(二)authentication,authorization

[复制链接]
查看5819 | 回复0 | 2012-12-6 13:50:42 | 显示全部楼层 |阅读模式
ASP.NET安全机制

请区分
authorization

authentication
ASP.NET安全机制主要分两个步骤:身份验证和权限控制。身份验证是对用户进行身份的识别,例如验证用户的用户名和密码,如果验证通过,则由权限控制决定用户是否有权限访问所请求的资源。
这两个步骤在ASP.NET中主要是通过web.config配置文件中的两个配置节来实现的,分别是<authentication ><authorization>web.config中的常用配置节已经在上一章中已经介绍了,在本章中主要介绍<authentication ><authorization>配置节。
&sup2; <authentication >
<authentication >配置节可以配置ASP.NET中的身份验证信息,支持三种类型,分别是Windows身份验证、Forms验证、Passport身份验证,通过mode属性可以设置身份验证的类型。
mode属性的几个可选设置如下:
1. Windows:应用程序将身份验证的工作交给IIS来完成。
2. Forms:由ASP.NET基于窗体进行身份验证。
3. Passport:由Microsoft Passport Network身份验证,是微软的登录通行证。
上述三种身份验证中Forms验证是三种验证方式中最灵活的一种,它可以选择将验证信息存储于CookiesURL中,伴随着用户请求和页面在Web服务器和浏览器之间传递。也可以将验证信息存储在数据库中。
<authentication>配置节包含一个子配置节<forms>,为基于窗体的自定义身份验证配置ASP.NET应用程序。<forms>配置节的主要属性如下表所示:
属性
描述
defaultUrl
指定身份验证后,重定向的URL
loginUrl
指定如果找不到相应的身份验证,重定向的URL
timeout
指定保存身份验证cookie的有效时间
name
存储用户身份的cookie名称
1  <forms>配置节的主要属性
代码演示: <authentication >

  1. <configuration>
  2. <system.web>
  3. <authentication mode="Forms">
  4. <forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
  5. </forms>
  6. </authentication>
  7.  </system.web>
  8. </configuration>
复制代码

通过上述配置文件,当用户访问站点时,如果用户没有通过身份验证,将页面重定向到UserLogin.aspx页面。但是将上面代码保存到web.config后,目标页面还是可以不用登录就直接访问,原因是现在只进行了身份验证而没有做权限控制,没有权限就不能够对用户进行验证更没有办法利用cookie进行验证信息的存储,所以现在我们必须对用户进行适当的权限管理了。

&sup2; <authorization>
<authorization>配置节主要是对应用程序的授权,从而控制用户通过客户端对网站中资源的访问。<authorization>配置节主要包含两个子配置节:allowdeny
<allow>配置节:添加一个验证规则,该规则允许对资源进行访问。
<deny>配置节:添加一个验证规则,该规则拒绝对资源的访问。
<allow>配置节和<deny>配置节都包含两个属性:usersroles,分别从用户和角色两个方面进行权限验证。
语法结构: <authorization>
  1. <configuration>
  2. <system.web>
  3. <authorization>
  4. <allow users="*">   ①
  5. <deny users="?">   ②
  6. </authorization>
  7.  </system.web>
  8. </configuration>
复制代码
语法解析:
① *代表所有用户,验证规则是允许所有用户。
② ?代码匿名用户,验证规则是拒绝匿名用户。
提示
allowdeny元素的先后顺序非常重要,系统总是按照从前往后逐条匹配的方式,执行最先的匹配者
如果我们要添加一个验证规则,允许所有除匿名用户之外的所有用户访问,可以结合<authentication>配置节在发现用户被拒绝访问之后重定向到指定的URL,参考代码如下。
代码演示: < authorization >
  1. <configuration>
  2. <system.web>
  3. <authentication mode="Forms">
  4. <forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
  5. </forms>
  6. </authentication>
  7. <authorization>
  8. <deny users="?">
  9. <deny roles="Guest">
  10. <allow users="*">
  11. </authorization>
  12.  </system.web>
  13. </configuration>
复制代码
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则