也谈ASP.NET 中的身份验证

  一、配置安全身份验证模式

  在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户。

<authentication mode="[Windows|Forms|Passport|None]"><forms>...</forms><passport/></authentication>

  <authentication> 节的mode 为必选的属性。指定应用程序的默认身份验证模式。此属性可以为下列值之一:

   Windows :将 Windows 验证指定为默认的身份验证模式。将它与以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证结合起来使用:基本、摘要、集成 Windows 身份验证 (NTLM/Kerberos) 或证书。在这种情况下,您的应用程序将身份验证责任委托给基础 IIS。

  Forms :将 ASP.NET 基于窗体的身份验证指定为默认身份验证模式。

  Passport :将 Microsoft Passport Network 身份验证指定为默认身份验证模式。

  None :不指定任何身份验证。您的应用程序仅期待匿名用户,否则它将提供自己的身份验证。默认值为 Windows。

  二、设置基于窗体的身份验证

  当ASP.NET 基于窗体的身份验证<authentication mode="Forms"> 时,其<forms> 子节点为窗体自定义身份验证配置。

示例如下:

<authentication mode="Forms"><forms cookieless="UseDeviceProfile"defaultUrl="Default.
aspx"loginUrl="Login.aspx"name="cnblogs"slidingExpiration="false"timeout="15"/></authentication>

  cookieless :定义是否使用 Cookie 以及 Cookie 的行为。默认值为 UseDeviceProfile ;

  defaultUrl :定义在身份验证之后用于重定向的默认 URL。默认值为 default.aspx ;

  loginUrl :指定如果找不到任何有效的身份验证 Cookie,将请求重定向到的用于登录的 URL。默认值为 login.aspx ;

  name :指定要用于身份验证的 HTTP Cookie。默认值为 ".ASPXAUTH" ;如果正在一台服务器上运行多个应用程序,并且每个应用程序都需要唯一的Cookie,则必须在每个应用程序的 Web.config 文件中配置 Cookie 名称

  slidingExpiration :指定是否启用弹性过期时间。True 指定启用弹性过期时间。在单个会话期间,身份验证 Cookie 被刷新,并且每个后续请求的到期时间被重置。在 .NET Framework 1.x 版中,默认值为 True。 False 指定不启用可调过期,并指定 Cookie 在最初发出之后,经过一段设定的时间间隔后过期。在 .NET Framework 2.0 版中,默认值为 False。

  timeout :指定 Cookie 过期前逝去的时间(以整数分钟为单位)。如果 SlidingExpiration 属性为 true,则 timeout 属性是滑动值,会在接收到上一个请求之后的指定时间(以分钟为单位)后过期。为防止危及性能并避免向开启 Cookie 警告的用户发出多个浏览器警告,当指定的时间逝去大半时将更新 Cookie。这可能导致精确性受损。持久性 Cookie 不超时。默认值为 "30"(30 分钟)。

  三、配置 Web 应用程序的授权

  接下来添加<authorization> 节配置 Web 应用程序的授权,以控制客户端对 URL 资源的访问。

<authorization><allow ...="" /><deny ...="" /></authorization>

  <authorization> 授权:顺序是先写allow,再写deny,不然就会出现问题。

  allow :向授权规则映射添加一个规则,该规则允许对资源进行访问。

  deny :向授权规则映射添加一条拒绝对资源的访问的授权规则。

示例如下:

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

  <deny  users="?" />  表示拒绝访问的用户。问号 (?) 表示拒绝匿名用户;星号 (*) 表示拒绝所有用户访问。若添加用户名列表使用逗号分隔。

  设置完毕后,Web.config 文件的整体配置如下:

<!--通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户。--><authentication mode="Forms"><forms cookieless="UseDeviceProfile"defaultUrl="Default.aspx"loginUrl="Login.aspx"name="newerSize"slidingExpiration="false"timeout="15"/></authentication><!-- <authorization>授权:顺序是先写allow,再写deny,不然就会出现问题。 --><authorization><deny users="?"/></authorization>

  四、在页面程序中使用Forms 身份验证

  在页面程序的后台代码中,我们使用FormsAuthentication 类为Web 应用程序管理 Forms 身份验证服务。在登录页面Login.aspx 中,代码如下:

//登录protected void btnLogin_Click(object sender, EventArgs e){string name = txtName.Text.Trim();string pwd = txtPwd.Text.Trim();if ("Andy" == name && "123" == pwd){//方式一//FormsAuthentication.RedirectFromLogin
Page(name, true);/*参数二为true:表示创建持久 Cookie(跨浏览器会话保存的 Cookie)*///方式二//为用户创建一个票证,并将其放入cookie或者url中(具体看你怎么设置票证的保存方式)FormsAuthentication.SetAuthCookie(name, true);Response.Redirect("Default.aspx");}else{Response.Write("<script>alert('登录失败!')</script>");}}//注销protected void btnExit_Click(object sender, EventArgs e){//从浏览器删除 Forms 身份验证票证。FormsAuthentication.SignOut();}

  登录成功后,跳转到的默认页面Default.aspx 中,代码如下:

protected void Page_Load(object sender, EventArgs e){//User:
获取有关发出页请求的用户的信息。string username = User.Identity.Name;Label1.Text = username + ":登录成功!";}

  User.Identity.Name 用于获得Cookie 中的用户名。

时间: 2024-11-17 12:18:52

也谈ASP.NET 中的身份验证的相关文章

一起谈.NET技术,也谈ASP.NET 中的身份验证

一.配置安全身份验证模式 在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户. <authentication mode="[Windows|Forms|Passport|None]"> <forms>...</forms> <passport/> </authentication> <authentication>

asp.net中的身份验证

asp.net asp.net中的身份验证 我用的是基于窗体的验证,这也是最常用的,我只写一下摘要,源代码太长,但应该不影响理解代码. web.config的修改:<authentication mode="Forms" /> 用户的登陆验证方法,:这里有两个输入控件的,一个是user_tb,用来输入用户,一个是psw_tb,用来输入密码private void Button1_Click(object sender, System.EventArgs e){//用户登陆验

ASP .NET 中的身份验证:.NET 安全性指导

安全|安全性 摘要本文讨论了设计服务器应用程序时考虑安全性的重要性.Internet Information Services 和 ASP .NET 均提供了安全模型,以便您对用户进行适当的身份验证,并在应用程序中获得正确的安全环境. -------------------------------------------------------------------------------- 目录简介安全性考虑IIS 和 ASP .NET 之间的关系身份验证方法Web 服务的安全性代码访问安全

也谈“.NET研究”ASP.NET 中的身份验证

一.配置安全身份验证模式 在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户. <authentication mode="[Windows|Forms|Passport|None]"> <forms>...</forms> <passport/> </authentication> <authentication>

利用.net的内部机制在asp.net中实现身份验证

在.net内部存在一些默认机制,具体说来有如下: (1)如果类的实例字段没有赋初始值,那么它们就会被赋默认值,对于引用类 型字段的默认值为null,对于简单值类型字段(即数值类型)默认值为对应形式 的0(如sbyte.byte.short.ushort.int.uint.long 和 ulong都是0,而char 类型字段的默认值值是'\0x0000',float类型字段是0.0f,double类型字段是 0.0d等等). (2)如果类中赋初值的静态字段,那么自动生成一个静态构造函数,在静态函

Asp.net中基于Forms验证的角色验证授权

asp.net Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问

windows身份验证-ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码?

问题描述 ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码? 我现在想在web程序中发送邮件(或类似需要域验证的功能),其中Credentials我想使用当前登陆用户的. 请问在这个时候怎么获取密码或有什么别的方式处理? 解决方案 无法获取的,如果可以获取的话,你的电脑系统就没有任何安全性可言... 解决方案二: 只知道里面有个SAM文件 解决方案三: 你指的是,我发布个ASP.NET应用程序,你访问了,我就可以获取到你的windows登录用户和密码? 你觉得这可能么

详解ASP.NET Core和ASP.NET Framework共享身份验证_实用技巧

.NET Core 已经热了好一阵子,1.1版本发布后其可用性也越来越高,开源.组件化.跨平台.性能优秀.社区活跃等等标签再加上"微软爸爸"主推和大力支持,尽管现阶段对比.net framework还是比较"稚嫩",但可以想象到它光明的前景.作为.net 开发者你是否已经开始尝试将项目迁移到.net core上?这其中要解决的一个较大的问题就是如何让你的.net core和老.net framework站点实现身份验证兼容! 1.第一篇章 我们先来看看.net co

ASP.NET中 RegularExpressValidator(正则验证)的使用

原文:ASP.NET中 RegularExpressValidator(正则验证)的使用 ylbtech-ASP.NET-Control-Validator: RegularExpressValidator(正则验证)的使用  ASP.NET中 RegularExpressValidator(正则验证)的使用. 1.A,运行效果返回顶部 RegularExpressionValidator:正则验证 属性: ControlToValidate:要验证的控件 ErrorMessage:错误提示信息