HR系统邮件审批功能总结
时至今日,来兰亭工作的第三个小任务算是暂时告一段落了。这个小任务是耗费时间最长的,因此在这里总结整理一下。
首先这个功能的出发点是方法领导进行手下员工的审批,包括加班申请,休假申请,和漏打卡申请。由于HR系统的不给力,导致领导登录HR系统进行审判的时候耗费了太多的时间。所以考虑以邮件的形式,对每个申请进行系统外的审批。
起初考虑做这个功能的方案有两个:
- 直接调用原系统DLL里的审批方法。
- 手写sql,执行审批的sql语句或存储过程。
通过查看代码发现,审批的流程极其复杂,因为引入了一个工作流系统,所有的流程都是工作流设计器来完成的。而工作流设计器是一个以界面拖拽控件的形式来完成定制的业务逻辑。逻辑的关键代码在工作流设计器里没有找到(怀疑是原开发公司把核心代码编译完成后交付的)。所以,代码的内部逻辑不是很好找。
于是尝试用第一种方式:用我自己的dll去调用他的dll中的方法。首先需要引用他所有相关的dll,否则编译不会通过。(他所以的dll有200多个,由于不知道哪些是和此功能相关的,所以得全部引用上……),尝试调用方法的时候总是报错。怀疑是他里面的方法在调用前进行过一些初始化的工作,比如初始化spring等等的东西,这个就不太好办了。因此,该方案被搁置。
接下来准备尝试手写sql来完成审批,这也是领导希望的一种方式,因为它无论从效率上还是从对系统数据库的理解上都是更好的。但是监控的结果让我彻底放弃了这种想法。
尝试着对审批同意的事件进行了监控。发现记录了700多条sql…… 面对这个数字我只能感叹,也难怪之前的系统效率不高呢。于是尝试着整理数据库的结构,用到了一些工具来生成数据库文档。但是还是不知从何分析。于是此方案再次搁置。
于是又想到调原有的方法来模拟,但是初始化这块总是摸不透。灵感一现,那就模拟一下初始化的工作呗,怎么模拟呢?由于对原系统的工作流程不熟悉,那就完全照搬——复制了一个一模一样的站点,然后修改我需要的部分。这样,复制后的站点可以正常的启动,调接口。
于是我在新站点下建立了一个调用接口的测试页面,调用的过程发现原网站有身份验证(forms身份验证),在没有通过验证前,无法访问网站内的aspx页面
<authentication mode="Forms"/>
<forms loginUrl="~/logon.aspx" name="ESSAuthForm" timeout="10" protection="All" path="/">
<credentials passwordFormat="MD5">
<user name="username" password="password"/>
</credentials>
</forms>
</authentication>
此段配置是说网站采用forms身份验证,验证的原理就是登录成功后,框架会写入一个身份令牌的cookie到客户端浏览器,在访问其他页面的时候,需要进行验证。没有授权的用户访问页面时,就会被重定向到logon.aspx这个页面去。
于是就想,为我的某些特权页面允许匿名访问不就行啦。
一、设置所有页面都需要验证
<system web>
<authentication mode="Forms">
<forms loginUrl = "Lonin.aspx" name = ".ASPXFORMSAUTH"/>
</authentication>
</system web>
二、再特别设置对某个目录下的页面不需要验证(NoAuto为不需要验证的页面所在的目录)
<location path="NoAuto">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
尝试的时候发现不起任何作用。这下就麻烦了。经过研究,怀疑系统在其他地方还有对身份授权的验证,于是搜索了一下dll,发现在有个验证的命名空间下有两个方法,进行了身份的验证,验证不通过的话,就跳转到登录页。
于是……果断注释掉那两个方法,问题解决!
这个自定义的验证是在这里进行的配置:
<httpModules>
<add name="AuthenticateModule" type="CDC.PowerESS.Web.Support.AuthenticateModule,ESS.Web"/>
</httpModules>
相当于在处理管道的时候就进行了验证,杯具啊。
突破了这个,剩下的任务就好办了。
写个批量审批页面,ajax调用接口。
再写个后台程序,就齐了。
HR系统邮件审批功能总结的更多相关文章
- 系统右键自定义功能-右键备份【C#】
平时在某些公司发布网站的时候,都是手动备份文件,以免发布错误,做回滚使用.频繁的发布,在做备份的时候也会稍稍浪费点时间.当然在一些大的公司都会有一些自动发布系统,就不会出现这种问题了,对这种问题,我做 ...
- HR系统+人脸识别
近期一直在写一套HR系统,这套HR系统和人脸识别相结合.全然杜绝取代刷卡的情况产生.系统的灵活性比較强,开发简洁高速. 例如以下是一些功能上的截图 考勤模块仅仅是列举当中一个请假申请的功能做为展示 ...
- Django error信息邮件通知功能配置部署
1. 最近QA成为项目的重点,除了突破依赖外部表的阻力开始启用单元测试,还有一点就是对在线的生产服务的错误信息启用这个邮件通知功能,下面简单说一下启用方法: 1.发送邮件账号配置配置: EMAIL_H ...
- wordpress评论回复自动发邮件的功能
A.插件流,可以说WP强大的插件功能的确能省事不少. 插件的办法一般是两步:第一实现成功发邮件,第二时间评论自动回复,这就需要用到两个插件,一个是Configure SMTP,一个是Mail To C ...
- shell邮件发送功能实现
本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...
- 学霸系统UI部分功能规格说明书
发布人员:软件工程实践小队 发布内容:学霸系统UI部分功能规格说明书 版本:学霸V1.1版本 ◆Part 1:引言 1.1目的 本功能规格说明书的目的在于明确 ...
- 如何设置outlook实现自动秘密抄送邮件的功能?
很多朋友会发现虽然在家里同步了公司的邮箱可以正常收发邮件,可是每当使用家里的outlook发送相关邮件的时候,在公司的邮箱里找不到相关的发件记录,只能同步收件箱,而不能同步发件箱应该是比较让人困扰的问 ...
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- Aspose.Words实现邮件合并功能和打印
前言 最近公司要做一个B/S架构的web打印系统,主要是可以上传.下载.邮件合并.打印等等,还有就是角色的分配.用户的创建.日志记录等等,跟一般的web系统一样.可能不一样的就是需求:想把excel的 ...
随机推荐
- JSF教程(9)——生命周期之Process Validations Phase
在这个过程其中JSF的实现者使用processValidators方法处理全部在tree中的组件中注冊的验证器.验证的过程就是通过每一个组件已有的规则对其已经保存的值进行校验,同一时候也对输入的值进行 ...
- 移动web:转盘抽奖(幸运大转盘)
为了获取客户.回馈客户,平台一般会推出抽奖活动类的营销页.因此web页面中,有各式各样的抽奖效果. 格子式(九宫格),背景滚动式(数字/文字/图案),旋转式(转盘),游戏式(砸蛋/拼图...).... ...
- android imageButton 透明图片
在Android有许多不规则button.例如: 这个时候,我们假设想做成不规则button的话.第一步就是搞一张边缘透明的png图片,然后用src指定到他.这个时候我们会发现,还没有达到要的效果.还 ...
- 对于Netty的十一个疑问(转)
[说明]本文原载于码农 IO(manong.io)官方微信 developerWorks,转载.引用请注明出处及作者. 1.Netty 是什么? Netty 是一个基于 JAVA NIO 类库的异步通 ...
- Java 开源博客 —— Solo 0.6.9 发布时间!
Solo 它是 GitHub 上 Star 的最大数量 Java 博客系统,今天,我们宣布 0.6.9 正式版,欢迎来到下载. 特性 基于标签的文章分类 博客/标签 Atom/RSS.Sitemap ...
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...
- 讲座:采用Store检查邮件(1)
讲座:采用Store检查邮件(1) 一.邮件接收的体系结构 JavaMail API中定义了一个java.mail.Store类,用于运行邮件的接收任务,该类的实例对象封装了某种邮件接收协议的底层实施 ...
- Android 推断SD卡是否存在及容量查询
首先要在AndroidManifest.xml中添加SD卡訪问权限 <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name= ...
- asm 盘头损失,破坏
BUG 14693394 – ORA-15196: INVALID ASM BLOCK HEADER [KFC.C:26076] [ENDIAN_KFBH] BUG 14758001 – ORA-15 ...
- 【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装,实现简单灵活的Spring框架(十一)
文件夹 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器開始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入 ...