j9国际站|(官网)点击登录

新疆j9九游会

本站首页 j9九游会 乐成案例 公司新闻 公司简介 客服中心 软件技能 网站建立
  您如今的地位: 新疆二域j9九游会公司 >> 开辟言语 >> 文章注释

搜集整理的asp.net的验证方法大全session

   搜集整理了一篇关于.net验证方法的文章,各人看看。
   此前我介绍了利用数据库完成的提交验证方案,一些冤家猜疑其服从欠安,以为Session是更好的方案。

确实利用Session也不会斲丧太多内存,并且现在内存白菜价,最不济就顺手买个2G的插上也就够了,以是我将在此写下Session版的完成提要,其他细节参考前篇。
完成方案简述:
在Session中存储一个哈希表用以记载该用户的每一条验证信息,哈希表的键为验证信息的过时工夫,值为验证码的明文。
过时工夫利用ViewState存储,以发给客户端,并在提交时获取,以读取对应的验证码明文。
传给验证码天生页面的ID参数是经ToFileTime()办法转换的过时工夫,验证码天生页获取到此参数落伍行逆转换,再读取对应的验证码明文以天生表现。
代码解说:
先创建一个静态类,名为“提交验证”,将用于存储验证信息的Session变量封装为一个属性:

/// <summary>

/// 验证信息表

/// </summary>

static Hashtable 验证信息

{

    get

    {

        return Core.函数库.网络.Session["验证信息"] as Hashtable;

    }

    set

    {

        Core.函数库.网络.Session["验证信息"] = value;

    }

}

清算办法,用于将过时的数据扫除:
/// <summary>
/// 清算一切过时的验证信息

/// </summary>
public static void 清算()

{

    if (验证信息 == null || 验证信息.Count < 5) return;

    foreach (DictionaryEntry f in (Hashtable)验证信息.Clone())

    {
        if ((DateTime)f.Key < DateTime.Now) 验证信息.Remove(f);

    }

}

小于5条验证信息则疏忽。

克隆一个验证信息表供foreach利用,假如利用原表循环的话,间接移除内容会改动表长度,从而引发非常。

添加办法:

/// <summary>

/// 添加一个新的验证信息。

/// </summary>

/// <param name="验证码">要保管的验证码</param>

/// <param name="过时工夫差值">用于盘算过时工夫,单元为分钟</param>

/// <returns>过时工夫戳</returns>

public static DateTime 添加(string 验证码, byte 过时工夫差值)

{

    清算();

    var 过时工夫 = DateTime.Now.AddMinutes(过时工夫差值);

    if (验证信息 == null) 验证信息 = new Hashtable();

    验证信息.Add(过时工夫, 验证码);

    return 过时工夫;

}

在添加行进行过时信息清算事情。
获取、验证、移除办法:
/// <summary>
/// 依据过时工夫戳获取对应的验证码
/// </summary>
/// <param name="过时工夫戳">验证信息过时工夫戳</param>
/// <returns>验证码明文</returns>
public static string 获取(DateTime 过时工夫戳)

{

    return 验证信息[过时工夫戳] as string;

}

 

/// <summary>

/// 验证用户输出的验证码能否准确

/// </summary>

/// <param name="过时工夫戳">验证信息过时工夫戳</param>

/// <param name="验证码">用户输出的验证码</param>

/// <returns>前往错误信息,如验证乐成则前往null</returns>

public static string 验证(DateTime 过时工夫戳, string 验证码)

{
    if (过时工夫戳 < DateTime.Now) return "验证信息已过时";

    var 验证码明文 = 获取(过时工夫戳);

    if (验证码明文 == null) return "验证信息有效或已过时";

    else if (验证码明文.ToLower() != 验证码.ToLower()) return "验证码错误";

    else return null;

}


/// <summary>
/// 依据过时工夫戳移除对应的验证信息
/// </summary>

/// <param name="过时工夫戳">验证信息过时工夫戳</param>
public static void 移除(DateTime 过时工夫戳)

{
    验证信息.Remove(过时工夫戳);
}
利用办法:
利用时在页面上封装一个基于ViewState属性:
/// <summary>
/// 工夫戳属性,基于ViewState
/// </summary>

public DateTime? 工夫戳

{
   get

    {
        return ViewState["工夫戳"] as DateTime?;

    }
    set
    {
        ViewState["工夫戳"] = value;
    }
}

然后在load事情中挪用:
protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {
        工夫戳 = 提交验证.添加();
        Image1.ImageUrl = "~/VerifyImage.aspx?ID=" + 工夫戳.Value.ToFileTime();
    }

}

(无参数的“添加”办法是我完成的一个适配器封装办法,接纳默许的过时工夫设置,随机天生验证码)

提交时的挪用:

protected void Button1_Click(object sender, EventArgs e)

{
    var s = 提交验证.验证(工夫戳.Value, TextBox1.Text);

    if (s == null)

    {
        CustomValidator1.IsValid = true;
        //提交...
        提交验证.移除(工夫戳.Value);

    }
    else

    {
        CustomValidator1.IsValid = false;

        CustomValidator1.ErrorMessage = s;

    }

}


 

作者:斯克迪亚 | 文章泉源:cnblogs | 更新>###51:58

  • 上一篇文章:

  • 下一篇文章: 没有了

  • 相干文章:
    asp,net软件布局设计和相干的宁静性题目
    怎样办理Menu菜单被frame遮挡以及iframe自顺应的题目
    Orcale与Asp.net的端口抵触办理办法
    Session保管在SqlServer中可完成
    怎样使用SQL Server举行会话形态session的坚持
    ASP.NET 2.0之Memebership扩展使用办理方案
    数据库设计-数据库的三级形式
    ASP.NET中怎样利用unsafe选项
    三个视图搞定SqlServer数据库字典
    深化理解数据源控件Data Souce controls
    软件技能
    · 开辟言语
    · Java技能
    · .Net技能
    · 数据库开辟
    最新文章  
    ·搜集整理的asp.net的验证方
    ·种种FOR循环布局的整理
    ·软件项目开辟中应该思索那
    ·搜集整理的javascript sel
    ·j9九游会中项目司理有那些
    ·学习怎样在Lambda表达式进
    ·C++底子知识:布局体数据的
    ·C#完成短信发送步伐的例子
    ·sun近来修补了一局部java的
    ·rss定制的别的一种完成方法
    ·delphi完成使用arp诈骗来实
    ·底子学习:基于WF的流程框
    ·网络编程中怎样得知一次数
    ·怎样逆序输入单链表?
    ·j9九游会历程中的功能设计
    关于j9九游会 | j9九游会 | 下载试用 | 客服中心 | 联系j9九游会 | 相关单位 | 网站舆图 | 新疆电子舆图 | RSS订阅
    版权一切 © 2016 新疆二域j9九游会网 www.k8w.net All Rights Reserved
    新疆j9九游会>###、4811639.
    ### ;>###华联大厦A-5C 邮编:830000