ASP.NET身份验证方式
ASP.NET身份验证方式
ASP.NET身份验证方式在asp.net中,其实微软提供了一整套的完整的机制来实现“成员角色管理”。打开IIS,然后双击右侧“身份验证”,会显示出当前IIS支持的所有的身份验证方式。
大致分为如下几种:
1.活动目录的客户端证书,不常用
2.ASP.NET模拟。
3.Form身份验证,这个用的很多。
4.windows身份验证:基于windows操作系统的用户或者域用户的身份验证。
5.基本身份验证:其实也是基于windows操作系统的账户验证的。
6.匿名身份验证:谁都可以访问,其内部也是通过指定一个特定的windows系统的user账户来访问的。
7.摘要身份验证:使用 Windows 域控制器对请求访问 Web 服务器内容的用户进行身份验证。
一、匿名身份验证
所谓匿名身份验证,其实就可以理解为“不验证”。就是匿名用户都可以访问资源,没有任何限制。通常我们的网站,都要启用匿名方式验证,集成windows身份验证。不难发现,其实匿名身份验证,也是通过windows用户组里面的一个特定的用户来通过验证的
二、Form身份验证
Form 身份验证,需要asp.net提供支持。因为通常网站的身份验证和成员管理都非常复杂,而不是通过单纯的某一种验证方式能够实现的。对于大部分互联网的网站而言,用户可以访问部分页面,但部分页面必须登录后才能访问和操作,而且不同用户角色登录,操作权限也不一样。这又会涉及到很多方面的知识,而且实现方式也有很多种。
三、配置安全身份验证模式
在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户。
<authentication mode="[Windows|Forms|Passport|None]">
<forms>...</forms>
<passport/>
</authentication>
<authentication> 节的mode 为必选的属性。指定应用程序的默认身份验证模式。
此属性可以为下列值之一
1、Windows :将 Windows 验证指定为默认的身份验证模式。将它与以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证结合起来使用:基本、摘要、集成 Windows 身份验证 (NTLM/Kerberos) 或证书。在这种情况下,您的应用程序将身份验证责任委托给基础 IIS。
2、Forms :将 ASP.NET 基于窗体的身份验证指定为默认身份验证模式。
3、Passport :将 Microsoft Passport Network 身份验证指定为默认身份验证模式。
4、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>
1、cookieless :定义是否使用 Cookie 以及 Cookie 的行为。默认值为 UseDeviceProfile;
2、efaultUrl :定义在身份验证之后用于重定向的默认 URL。默认值为 default.aspx ;
3、loginUrl :指定如果找不到任何有效的身份验证 Cookie,将请求重定向到的用于登录的 URL。默认值为 login.aspx ;
4、name :指定要用于身份验证的 HTTP Cookie。默认值为 ".ASPXAUTH" ;
如果正在一台服务器上运行多个应用程序,并且每个应用程序都需要唯一的Cookie,则必须在每个应用程序的 Web.config 文件中配置 Cookie 名称。
5、slidingExpiration :指定是否启用弹性过期时间。
(1)、True 指定启用弹性过期时间。在单个会话期间,身份验证 Cookie 被刷新,并且每个后续请求的到期时间被重置。在 .NET Framework 1.x 版中,默认值为 True。
(2)、 False 指定不启用可调过期,并指定 Cookie 在最初发出之后,经过一段设定的时间间隔后过期。在 .NET Framework 2.0 版中,默认值为 False。
6、timeout :指定 Cookie 过期前逝去的时间(以整数分钟为单位)。如果 SlidingExpiration 属性为 true,则 timeout 属性是滑动值,会在接收到上一个请求之后的指定时间(以分钟为单位)后过期。为防止危及性能并避免向开启 Cookie 警告的用户发出多个浏览器警告,当指定的时间逝去大半时将更新 Cookie。这可能导致精确性受损。持久性 Cookie 不超时。默认值为 "30"(30 分钟)。
五、配置 Web 应用程序的授权
接下来添加<authorization> 节配置 Web 应用程序的授权,以控制客户端对 URL 资源的访问。
<authorization>
<allow ...="" />
<deny ...="" />
</authorization>
<authorization> 授权
顺序是先写allow,再写deny,不然就会出现问题。
1、allow :向授权规则映射添加一个规则,该规则允许对资源进行访问。
2、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.RedirectFromLoginPage(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 中的用户名。
- ASP.NET根据IP获取省市地址
- ASP.NET函数返回多个值的几种方法
- Asp.Net实现网站的快捷方式
- ASP.NET压缩图片
- ASP.NET的Random随机数
- ASP.NET网站的404错误页面的设置
- ASP.NET中XML与DataSet的相互转换
- asp.net 消息队列
- ASP.NET获取网页中的图片
- ASP.NET泛型约束
- 2013-12-25
- asp.net文件下载的方法
- 发送邮件的asp.net代码
- ASP.NET cache缓存的用法
- asp.net中split的用法
- ASP.NET常用的代码收集
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
- 手机QQ与小米路由器在一起 明天揭晓,敬请期待(手机QQ与小米路由器在一起)
- 小米音乐与 QQ 音乐合作,便捷迁移会员(小米音乐与QQ音乐合作)
- 小米推出米兔儿童电话手表奥特曼版,799 元,支持微信 QQ(小米推出米兔儿童电话手表奥特曼版)
- 贾怀胤唱《白龙马》 炸场 了 没想到京剧还能这么玩(贾怀胤唱白龙马)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
热门推荐
- 阿里云盘挂载云服务器(阿里云主机的安装硬盘挂载数据盘加载或修改/www)
- vio更新后怎么是黑页面(vite2.0 踩坑实录)
- 解释php中可变变量并举例说明(PHP Primary script unknown 解决方法总结)
- html5 canvas 特效(JavaScript canvas实现流星特效)
- 织梦安装程序(windowsxp下织梦后台如何安装)
- vuevlog制作软件(Vue实现Dialog封装)
- python批量注册(python实现批量注册网站用户的示例)
- 配置阿里云docker镜像地址(Docker配置阿里云镜像加速pull的实现)
- asp.net中split的用法
- python提供的四种基本数据类型(浅谈python的输入输出,注释,基本数据类型)