ASP.NET 中的表单身份验证(Forms Authentication)
表单验证可以通使用一个登录页面验证用户的用户名和密码。未通过验证的请求会被重定向到登录页面,要求用户输入其凭据信息(同常是用户名和密码)。如果请求通过验证,系统将签发一个身份验证票据,在用户会话期间,这个票据维护用户的身份标识信息以及用户角色。通过FormsAuthentication 类可以访问用户的标识信息和角色。
下面实现一个简单的Forms Authentication:
(1)新建一个新的Web应用程序,创建一个登录页面。
(2)修改应用程序根目录下的web.config文件,设置应用程序的验证模式为表单验证。
<system.web> <authentication mode="Forms"> <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"> </forms> </authentication> </system.web>
(3)在限制访问的目录下创建一个web.config文件,修改authorization配置节阻止匿名用户的访问。
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
(4)在登录面页中鉴别用户并且创建一个表单验证票据。
下面的代码假定你有一个IsAuthenticated函数用于验证用户,一个GetRoles函数用于获取用户角色。
void OnLogin(object sender, EventArgs e)
{
if(IsAuthenticated(username, password))
{
string roles = GetRoles(username);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // 版本
username, // 用户名
DateTime.Now, // 票据的签发时间
DateTime.Now.AddHours(1), // 票据的过期时间
false, // 是否为永久Cookie
roles // 附加的用户数据,此处用来存放用户角色
);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, false));
}
}
(5)捕获验证请求事件,创建一个GenericPrinciple对象。
void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
string[] roles = ticket.UserData.Split(new char[] { ',' });
FormsIdentity identity = new FormsIdentity(ticket);
GenericPrincipal priciple = new GenericPrincipal(identity, roles);
Context.User = priciple;
}
转载于:https://www.cnblogs.com/avisnet/archive/2006/09/14/503889.html
ASP.NET 中的表单身份验证(Forms Authentication)相关推荐
- ASP.NET在IE10中Form表单身份验证失效问题解决方法
我的系统遇到了这个问题,还好有好心网友发布了一篇文章: ---------网上找的原文如下--------------------------- IE10中Session丢失问题引起众多业内人士的关注 ...
- 【JSP/SERVLET】Tomcat内置表单身份验证
一.概述 前面是扯犊子的,JSP/SERVLET基于HTTP规范,提供了几种安全支持,BASIC.DIGEST.FORM.CLIENT-CERT,本文主要介绍一下FORM的安全支持开发,文末有一个小d ...
- 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(4)暴力破解HTML表单身份验证
黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(4)暴力破解HTML表单身份验证 文章目录 黑帽python第二版(Black Ha ...
- GOOGLE ADSENSE广告联盟收不到PIN码_快速表单身份验证PIN码方法
在自己的网站或者博客上投放Google Adsense广告是目前很多站长不错的赚钱途径.尤其是Google Adsense不仅单价高.而且信誉好.支付稳定等天然优势让国内众多广告联盟黯然失色.在流量有 ...
- 表单身份验证(受保护的目录)
根目录下的 web.config <authentication mode="Forms"> <forms name=".COOKIEDEMO&qu ...
- asp.net 调用html页面,ASP.NET中HTML页面的访问验证设置方法
可能有很多朋友和我一样不会留意到这样的问题,在ASP.NET中,使用其自身提供的访问验证功能(表单验证.Passport 验证.Windows 验证),并不会对静态文件(如 html.图像文件.文本文 ...
- ASP.Net4中实现自定义的请求验证(转贴)
1. 请求验证什么? 首先,请看下图: 上图中,是我们常见一个ASP.Net错误提示.由于ASP.Net默认情况是把请求验证(validateRequest)设置是为true,从而使得A ...
- 如何验证 Active Directory 使用表单身份验证和 Visual C#.NET
本文引用下面的 Microsoft.NET 框架类库名称空间: System.Text System.DirectoryServices System.Security.Principal Syste ...
- asp.net中提交表单数据时提示从客户端(。。。)中检测到有潜在危险的 Request.Form 值...
看到这个图是不是很亲切熟悉哈,做过.net的肯定都见过哈 已经 将近4年没碰.net了,今天正好朋友的程序有几个bug,让我帮忙修复下,于是我就抱着试试看的心情改了改,改到最后一个问题的时候也就是上面 ...
最新文章
- 使用Docker-容器命令案例1
- Linux系统运维之路
- 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)
- Magento: 友好显示库存 User friendly product availability message in Magento
- linux_network
- 计算机辅助药物设计中的分子动力学模拟
- 希捷硬盘校准日志分析
- ffmpeg 自定义IO与Seek
- linux-- input子系统分析
- 大屏用户有福了,vivo大屏旗舰被“猪队友”爆光,售价9999元?
- 转:sql server 中的汉字转化为拼音
- springboot系列课程笔记-第四章-WEB开发
- 说说各种手机输入法的体验
- Ubuntu 安装源及初始配置
- 【谷歌地图--DirectionsSDK集成】
- 使用Arthas热更新时,lombok注解导致mc命令编译失败
- 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结
- Lottie—json文件解析
- c语言AT源码,51单片机读写AT24C02源代码(详细注释)
- Cesium中文API 文档