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: 值在给定的最大值,最 ...
随机推荐
- yii2框架目录
框架目录结构 [目录] backend——后台web程序 common——公共的文件 console——控制台程序 environments——环境配置 frontend——前台web程序 [文件] ...
- 第14月第1天 uialterview 键盘 uibutton圆角
1. 在IOS 8之后 当UIAlertView 和keyboard 同时出现时,会出现键盘闪现的情况 所以就修正UIAlertView http://blog.sina.com.cn/s/blog_ ...
- 基于theano的多层感知机的实现
1.引言 一个多层感知机(Multi-Layer Perceptron,MLP)可以看做是,在逻辑回归分类器的中间加了非线性转换的隐层,这种转换把数据映射到一个线性可分的空间.一个单隐层的MLP就可以 ...
- LeetCode(Easy)--C++笔记
前言:这是关于LeetCode上面练习题C++的笔记,有些地方参考有网友的解题方法(可能有些参考没能注明,望谅解),如有需要改进的地方希望留言指教,多谢! 目录: ZigZag Conversion ...
- sublime sftp 打开远程文件夹
2014-04-29 13:19:09 总结: 本文介绍两种方法,推荐第二种方法(samba+windows映射) 先贴出sublime打开远程(Linux)目录所需的配置文件(sublime是通过s ...
- Python_oldboy_常用模块(九)
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & pickle shelve xml处理 yaml处理 configpar ...
- webstorm2017添加vue模板
- oracle创建表空间并赋予权限
CREATE TEMPORARY TABLESPACE 表空间 TEMPFILE 数据存储路径('D://oracle//NEW_NAMESPACE.DBF') SIZE 32M AUTOEXTEN ...
- selenium 操作文本框(textarea输入)
selenium 对文本框的输入操作一般有两种形式,传统的是直接通过定位元素通过sendKeys()方法直接在文本框中输入信息.但有时候我们可以通过id 的方式将其进行定位,但却不能通过sendKey ...
- 【论文阅读】MEAL: Multi-Model Ensemble via Adversarial Learning
转载请注明出处:https://www.cnblogs.com/White-xzx/ 原文地址:https://arxiv.org/abs/1812.02425 Github: https://git ...