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

 //创建一个FormsIdentity对象和一个GenericPrincipal对象。前一个对象从票名称中
        //创建一个FormsIdentity对象和一个GenericPrincipal对象。前一个对象从票名称中 //获得用户名,后一个对象将此标识与用户角色列表包含在一起
        //获得用户名,后一个对象将此标识与用户角色列表包含在一起 FormsIdentity ident = new FormsIdentity(ticket);
        FormsIdentity ident = new FormsIdentity(ticket);
 GenericPrincipal princ = new GenericPrincipal(ident, roles);
        GenericPrincipal princ = new GenericPrincipal(ident, roles); HttpContext.Current.User = princ;
        HttpContext.Current.User = princ; }
   }
2、登录时可以得到用户信息以及是否已经登录
 //验证及得到用户信息
//验证及得到用户信息 private void Page_Load(object sender, System.EventArgs e)
    private void Page_Load(object sender, System.EventArgs e) {
    { FormsIdentity userIdentiy;
        FormsIdentity userIdentiy; FormsAuthenticationTicket objTecket;
        FormsAuthenticationTicket objTecket;
 if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
        if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) {
        { userIdentiy = HttpContext.Current.User.Identity;
            userIdentiy = HttpContext.Current.User.Identity; objTecket = userIdentiy.Ticket;
            objTecket = userIdentiy.Ticket; //可以从Ticket中获取用户信息
            //可以从Ticket中获取用户信息 }
        } else
        else {
        { Response.Write("<script>alert('您没有登陆!');history.back()</script>");
            Response.Write("<script>alert('您没有登陆!');history.back()</script>"); //或者指向登录页面
            //或者指向登录页面 Response.Redirect("Login.aspx");
            Response.Redirect("Login.aspx"); }
        }  }
}
3、登录时生成用户票据
 private string Authorization(string username, string password)
private string Authorization(string username, string password) {
    { //用户登录验证
        //用户登录验证 string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
        string ip = System.Web.HttpContext.Current.Request.UserHostAddress; string name = username;
        string name = username; string pwd = password;
        string pwd = password;
 if (ValidatePwd(name, pwd) = true)  //数据库验证,代码略
        if (ValidatePwd(name, pwd) = true)  //数据库验证,代码略 {
        { //创建身份验证票证
            //创建身份验证票证 FormsAuthenticationTicket ticker = new FormsAuthenticationTicket(1, name, DateTime.Now,
            FormsAuthenticationTicket ticker = new FormsAuthenticationTicket(1, name, DateTime.Now, DateTime.Now.AddMinutes(30), false, "");
                                                DateTime.Now.AddMinutes(30), false, "");
 string encryptTicket = FormsAuthentication.Encrypt(ticker);
            string encryptTicket = FormsAuthentication.Encrypt(ticker); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket); Reponse.AppendCookie(cookie);
            Reponse.AppendCookie(cookie);
 //将用户重定向到最初的请求页面
            //将用户重定向到最初的请求页面 Response.Redirect(FormsAuthentication.GetRedirectUrl(name, false));
            Response.Redirect(FormsAuthentication.GetRedirectUrl(name, false));
 //Resonse.Redirect(FormsAuthentication.RedirectFromLoginPage(name, false));
            //Resonse.Redirect(FormsAuthentication.RedirectFromLoginPage(name, false)); //this.Session["UserName"] = username;
            //this.Session["UserName"] = username; }
        } else
        else {
        { Response.Write("<script>alert('您的用户名或密码错误');</script>");
            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: 值在给定的最大值,最 ... 
随机推荐
- js星星评分插件
			下载:https://files.cnblogs.com/files/wordblog/%E6%98%9F%E6%98%9F%E6%8F%92%E4%BB%B6.rar 
- Jenkins的安装及使用(二)
			介绍两个方面:编译本地项目和拉取git代码并编译 在这之前,先要进行一个配置. 一.编译本地项目 开始添加任务,任务类型选择自由风格: 点击项目进入详情,源码管理选择无 在构建的地方选择项目,然后注意 ... 
- 设置linux的console为串口【转】
			转自:http://blog.chinaunix.net/uid-27717694-id-4074219.html 以Grub2为例:1. 修改文件/etc/default/grub #显示启动菜 ... 
- PGP工作原理及其安全体制
			现代信息社会里,当电子邮件广受欢迎的同时,其安全性问题也很突出.实际上,电子邮件的传递过程是邮件在网络上反复复制的过程,其网络传输路径不确定,很容易遭到不明身份者的窃取.篡改.冒用甚至恶意破坏,给收发 ... 
- 0行代码实现任意形状图片展示--android-anyshape
			前言 在Android开发中, 我们经常会遇到一些场景, 需要以一些特殊的形状显示图片, 比如圆角矩形.圆形等等.关于如何绘制这类形状, 网上已经有很多的方案,比如自定义控件重写onDraw方法, 通 ... 
- Java编程的逻辑 (21) - 内部类的本质
			本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ... 
- Java编程的逻辑 (26) - 剖析包装类 (上)
			本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ... 
- .NetCore 中使用AppMetrics向InfluxDB中添加监控数据并通过Grafana图像分析
			考虑到分布式部署监控环境是所有的请求情况,所以这一块一般在网关GateWay里面加比较省事,聚合在一起的,如果放在api服务中,如果只有1个还好,一旦部署Node多是很痛苦的事情 这天需要添加的Nug ... 
- Codeforces Round #296 (Div. 1)  B - Clique Problem
			B - Clique Problem 题目大意:给你坐标轴上n个点,每个点的权值为wi,两个点之间有边当且仅当 |xi - xj| >= wi + wj, 问你两两之间都有边的最大点集的大小. ... 
- Java基础常见英语词汇(共70个)
			——————————ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— Java英文单词 OO: object—oriented ,面向对象 OOP:obje ... 
