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

简介:   一、配置安全身份验证模式  在Web.config 文件中,通过 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户。 ...   节的mode 为必选的属性。

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

  在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 应用程序的授权

  接下来添加<aut上海徐汇企业网站制作horization> 节配置 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"&gt上海企业网站设计与制作;
<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.RedirectFromLoginPage(name, true);
/*参数二为true:表示创建持久 Cookie(跨浏览器会话保存的 Cookie)*/
//方式二
//为用户创建一个票证,并将其放入cookie或者url中(具体看你怎么设置票证的保存方式)
FormsAuthentication上海闵行企业网站制作an>.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 中,代码如下:

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

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

目录
相关文章
|
4月前
|
存储 数据安全/隐私保护
.NET Core 究竟隐藏着怎样的神秘力量,能实现强身份验证与数据加密?
【8月更文挑战第28天】在数字化时代,数据安全与身份验证至关重要。.NET Core 提供了强大的工具,如 Identity 框架,帮助我们构建高效且可靠的身份验证系统,并支持高度定制化的用户模型和认证逻辑。此外,通过 `System.Security.Cryptography` 命名空间,.NET Core 还提供了丰富的加密算法和工具,确保数据传输和存储过程中的安全性。以下是一个简单的示例,展示如何使用 .NET Core 的 Identity 框架实现用户注册和登录功能。
42 3
|
3月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
68 5
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
4月前
|
开发框架 .NET 开发工具
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
|
5月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
4月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
4月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
48 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
75 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
56 0