专栏首页听雨堂电子签名实现的思路、困难及解决方案

电子签名实现的思路、困难及解决方案

        在办公自动化的流程中希望实现电子签名。         思路:             1、图片的存放:安全起见存放在库中为宜。最好不能被轻易下载。             2、使用的过程:显示一个密码框和“签名”按钮,输入密码并按下按钮后,如果正确,隐藏输入框和按钮,显示图片。             3、我的所有控件都是通过解析xml后动态生成的,签名应该是一个新类别无疑(类别4),它至少得对两个地方增加代码:(1)创建部分(得同时创建输入密码框、按钮、图片显示框)(2)写入部分,得解析出实际的值,存在xml中。         困难之一:图片的存入和取出                 解决:网上的方法很多,改下就行了。我用的显示方法是,图片指向一个链接,该链接返回一个纯图片,因而这个图片不能被保存。         困难之二:动态生成的按钮的响应事件                 解决:在外面写好按钮的处理方法,然后把委托作为参数传递给创建函数。如下

        /// <summary>
        /// 重载:根据xml字符串产生动态控件,显示所有字段
        /// 布局有一些默认属性(不再设为类的属性,那样就要求创建对象并保持)
        /// 根据当前用户决定是否有权限操作operator
        /// ***********下拉列表额外增加了一个空值**********
        /// </summary>
        /// <param name="xmldoc"></param>
        /// <param name="contain"></param>
        /// <param name="top"></param>
        static public void CreateControl(string strXml,HtmlContainerControl contain,int top,int left,System.EventHandler SignHandle)
        {

                调用:

XmlPage.CreateControl(xmldoc,DIV2,40,0,new System.EventHandler(this.SignButton_Click));                               //加载改分类的默认属性

        困难之三:这个比较不起眼,但其实很麻烦。原因:有按钮就有多次PostBack->需要每次都动态创建原来的控件->每次动态创建控件,都会重写控件->                 (1)对于可见的控件,如文本框,虽然理论上讲动态创建过程可能讲刚刚填入的内容抹掉,但实际上没有,Postback前填入的内容依然存在,所以不会有问题。                 (2)对于密码输入框,Postback后内容就消失了,所以无法保存输入的内容。那么,签名的值就很难被保存住。试过很多的方法:用label不行,最后写入时无法取到label的值(被初始的加载语句抹了),用textbox,隐藏的Textbox直接就不会传送到客户端(并非我想象的是一个Hidden的Input)。                 解决:在签名检验成功后,直接对Session中保存的xmldoc进行写,只写签名的值,其它的都不动。最后写入时,跳过签名的类型不管(因为已经写过了)         困难之四:不同的类型的xml切换时会出现控件重叠出现。                 解决:原因比较简单,没有移除上次的内容引起,移除就OK了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【1】CommonCode快速代码集

    阅读目录 CommonCode是什么? CommonCode包括哪些内容? 版本信息 CommonCode是什么? 简单的说,CommonCode是作者在...

    用户1075292
  • 为treeview添加客户端事件

    在使用TreeView控件时,要想取得选种的节点的信息需要返回服务器,这样的话就加重了服务器的负担。 如果仅仅是为了取的选种节点的信息,其实根本没有必要返回服...

    用户1075292
  • 动态加载控件

    参考文章:http://blog.csdn.net/yicko/archive/2005/04/16/349740.aspx 1、加载的是普通的控件,不是用户控...

    用户1075292
  • 神经网络+量子计算机?华人学者开源首个量子计算协同设计框架

    原文链接: https://arxiv.org/pdf/2006.14815.pdf

    新智元
  • Python高级进阶#005 pyqt5显示提示框

    注意:基本上所有的控件,包括窗体都有setToolTip这个函数,也就是说这个函数基本上都有。

    刘金玉编程
  • K8S学习笔记之filebeat采集K8S微服务java堆栈多行日志

    K8S内运行Spring Cloud微服务,根据定制容器架构要求log文件不落地,log全部输出到std管道,由基于docker的filebeat去管道采集,然...

    Jetpropelledsnake21
  • 关于react中的context

    当我们使用props进行组件中的数据传递时,假如祖先级组件的数据要传递至孙子级,这种情况的话,我们需要将祖先级别组件的属性通过props传递至父组件属性,再通过...

    _kyle
  • Android Gradle系列-进阶篇

    上篇文章我们已经将Gradle基础运用介绍了一遍,可以这么说,只要你一直看了我这个Gradle系列,那么你的Gradle也将过关了,应对正常的工作开发已经不成问...

    Rouse
  • 【剑指offer】47.求1+2+3+...+n

    求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    AI那点小事
  • 以银行为目标的Office 0day漏洞利用木马分析

    步骤分析 近日,国外安全厂商McAfee和FireEye发现了一个针对银行的木马,该木马利用了一个Office零日漏洞发起攻击,危害性非常高,经过安恒研究院分析...

    安恒信息

扫码关注云+社区

领取腾讯云代金券