ASp.net中Froms验证方式
{
String UserName = UserEmail.Text;
String UserPass = UserPass.Text;
If(通过连接数据库判断用户和密码是否正确)
{
//将经过身份验证的用户重定向回最初请求的 URL 或默认 URL
FormsAuthentication.RedirectFromLoginPage(UserName, Persist.Checkd);
//这个函数是否建立Cookie:解决:建立Cookie
Else
{
Msg.Text = Invalid credentials. Please try again.";
}
}
<system.web>
<authorization>
<deny users="?" /> 不充许没经过身份验证的用户进行访问
</authorization>
</system.web>
</configuration>“*”代表所有的用户,“?”表示匿名(没经过身份验证的)用户。
<authentication mode="Forms">
<forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"></forms>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
FormsIdentity类由 FormsAuthenticationModule在通过 Forms 身份验证对用户进行身份验证时使用。使用从 Forms 身份验证 Cookie 或 URL 解密的FormsAuthenticationTicket创建一个FormsIdentity的实例。然后,使用此FormsIdentity类的新实例构造一个新的 GenericPrincipal 对象,该对象将设置为当前 HttpContext的User属性的值
using System.Web.Security;
using System.Security;
//这个事件用于页面请求时获得cookie及角色值
protected void Application_AuthenticationRequest(object sender, EventArgs e)
{
//请求传递的Cookie集合中获得窗体身份验证Cookie
//FormsCookieName:获取用于存储Forms 身份验证票证的Cookie 名称
//FormsCookieName 用于引用存储FormsAuthenticationTicket 信息的Cookie
string cookiename = FormsAuthentication.FormsCookieName;
//提供创建和操作各HTTP Cookie 的类型安全方法
//HttpCookie类获取和设置各Cookie 的属性
HttpCookie cookie = Reauest.Cookies[cookiename]; /*从cookiename得到cookie*/
if (cookie == null)
return;
//从窗体身份验证cookie中提取和解密身份验证票据
FormsAuthenticationTicket ticket = null;
try
{
//返回值:一个FormsAuthenticationTicket 对象
ticket = FormsAuthentication.Decrypt(cookie.Value); //cookie:加密的身份验证票
}
catch(Exception err)
{
return;
}
if (ticket == null)
return;
//解析出用户在最初对用户进行身份验证时附加到票上的管道分隔的角色名称列表
string[] roles = ticket.UserData.Split(new char[] { '|' });

//创建一个FormsIdentity对象和一个GenericPrincipal对象。前一个对象从票名称中
//获得用户名,后一个对象将此标识与用户角色列表包含在一起
FormsIdentity ident = new FormsIdentity(ticket);
GenericPrincipal princ = new GenericPrincipal(ident, roles);
HttpContext.Current.User = princ;
}
2、登录时可以得到用户信息以及是否已经登录
//验证及得到用户信息
private void Page_Load(object sender, System.EventArgs e)
{
FormsIdentity userIdentiy;
FormsAuthenticationTicket objTecket;
if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
userIdentiy = HttpContext.Current.User.Identity;
objTecket = userIdentiy.Ticket;
//可以从Ticket中获取用户信息
}
else
{
Response.Write("<script>alert('您没有登陆!');history.back()</script>");
//或者指向登录页面
Response.Redirect("Login.aspx");
}
}
3、登录时生成用户票据
private string Authorization(string username, string password)
{
//用户登录验证
string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
string name = username;
string pwd = password;
if (ValidatePwd(name, pwd) = true) //数据库验证,代码略
{
//创建身份验证票证
FormsAuthenticationTicket ticker = new FormsAuthenticationTicket(1, name, DateTime.Now,
DateTime.Now.AddMinutes(30), false, "");
string encryptTicket = FormsAuthentication.Encrypt(ticker);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
Reponse.AppendCookie(cookie);
//将用户重定向到最初的请求页面
Response.Redirect(FormsAuthentication.GetRedirectUrl(name, false));
//Resonse.Redirect(FormsAuthentication.RedirectFromLoginPage(name, false));
//this.Session["UserName"] = username;
}
else
{
Response.Write("<script>alert('您的用户名或密码错误');</script>");
}
}
解释:
Context.User.Identity.IsAuthenticated
Context:获取与该页关联的 System.Web.HttpContext 对象
User:为当前 HTTP 请求获取或设置安全信息
Identity:获取当前用户的标识
IsAuthenticated:获取一个bool值,该值指示是否验证了用户
ASp.net中Froms验证方式的更多相关文章
- C# 中参数验证方式的演变
一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...
- ASP.NET中身份验证
ASP.NET中身份验证有三种方式:Windows.Forms和Passport. 1.Windows验证,基于窗体验证,需要每个页面写上验证身份代码,相对灵活,但操作过于复杂: 2.Passport ...
- C# 中参数验证方式
C# 中参数验证方式 一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空, ...
- ASP.net的身份验证方式有哪些?
[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验 ...
- ASP.NET中身份验证的三种方法
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权 ...
- ASP.NET Form身份验证方式详解
注:不会涉及ASP.NET的登录系列控件以及membership的相关话题, 我只想用比较原始的方式来说明在ASP.NET中是如何实现身份认证的过程. ASP.NET身份认证基础 在开始今天的博客 ...
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...
- 在ASP.NET 中有哪些数据验证控件(请解释ASP.NET中以什么方式进行数据验证)?
(1)RequiredFieldValidator:检查用户是否输入: (2)CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大.等于等: (3)RangeVa ...
- ASP.NET中的验证控件
ASP.NET提供了如下的控件: RequiredFieldValidator: 字段必填 (ControlTovalidate设定要验证的控件) RangeValidator: 值在给定的最大值,最 ...
随机推荐
- 01:MFC应用程序编程
一 MFC的发展 VC 1.0->VC 5.0->VC 6.0->VC2008 SP1)->VS2010 二 MFC基础 1 MFC 微软基础类库 采用类的方式,将Win32 ...
- 转载 为什么print在Python 3中变成了函数?
转载自编程派http://codingpy.com/article/why-print-became-a-function-in-python-3/ 原作者:Brett Cannon 原文链接:htt ...
- Ubuntu下pycharm安装
参考:http://blog.csdn.net/langb2014/article/details/51166782 http://www.cnblogs.com/zhcncn/p/4027025.h ...
- Canvas 3D球形文字云动画特效
Canvas 3D球形文字云动画特效 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器 ...
- Java中关于HashMap源码的研究
1.基础知识 1.数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1):数组的特点是:寻址容易,插入和删除困难. 2.链表 链表存储区间离散,占用内存比 ...
- IDEA下利用Jrebel插件实现JFinal项目main方法【热加载】
IDEA下利用Jrebel插件实现JFinal项目main方法[热加载] Jrebel破解办法 https://github.com/ilanyu/ReverseProxy/releases/tag/ ...
- jTessBoxEditor工具进行Tesseract3.02.02样本训练
1.背景 前文已经简要介绍tesseract ocr引擎的安装及基本使用,其中提到使用-l eng参数来限定语言库,可以提高识别准确率及识别效率. 本文将针对某个网站的验证码进行样本训练,形成自己的语 ...
- chisequre test
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合:卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就 ...
- Angular 5项目
Angular 5项目 如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文. Angular CLI 官网: https://github.com/angu ...
- 【Codechef】BB-Billboards
题解 传说中的--半标准杨表(行单调不增,列单调减) 如果N能整除M,我们把序列分成\(\frac{N}{M}\)段 然后里面要填K个1,显然我每一段必须填K个1,且可以构造出合法的序列,所以最少要填 ...