我们目前要做的加密算法是一个实体,或者说一个表达式。那么它就自然而然的要考虑下面几点:
1. 存放在哪?数据库以项目为单位
2. 增删改查的功能实现
3. 具体的功能实现。
按照《测试开发方法论》中关于这种复杂功能,直接划分成一个一个的小步骤,就会变得很简单,并且增强你的自信,也方便你进行排期,风险预测等等。还没看过的小伙伴 尽快关注此公众号哦~
那么好,我们先解决第一条。去数据库项目表增加 加密算法表达式 字段:
encryption:
打开models.py:
然后执行同步表结构的命令:
接着我们去搞第二步骤:
我们打开前端html模板:P_apis.html:
许久不开发,我们要先熟悉下 这个巨大html的当前结构:
我们现在可以不用去管这个加密的复杂逻辑,只把它当成一个字段去想,然后它的增删改查,我们都直接照抄 比如全局请求头 这种即可。
好,就这四步,是不是很简单?
开始实行:
在下面找个风水宝地,先新建个div:
然后添加展示它的函数:
然后去底部菜单,关联到这个shwo函数:
然后去完善这个div:
其中利用了bootstrap3的输入框组,可复制代码如下:
{# 加密算法#}
<div id="encryption_div" style="display: no2ne;border-radius:5px;width: 80%;background-color: white;
position: absolute;left: 10%;top: 10%;box-shadow: 4px 4px 8px grey;padding: 10px">
<div class="btn-group" style="float: right">
<button onclick="login_save()" type="button" class="btn btn-success">保存</button>
<button onclick="login_close()" type="button" class="btn btn-default">取消</button>
</div>
<h4>请设置该项目的加密表达式:</h4>
<p style="color: gray">选择加密的位置:URL 还是 BODY ,一般都是URL
选择加密的数据来源:也就是都需要哪些字段来作为入参变量。比如有的固定是选url或body中的 userid和token俩个变量,其他变量不考虑。那这里我们让用户写上userid,token。然后平台自动去url和body中去找这俩个字段和值
最后让用户写上 表达式:
比如:sign=base64(base64("#token#"+"#userid#")+"#time#")
注意其中我们会把##包裹的当做变量去找到真实的值进行替换,如果用户需求是 连key一起,那么应该告诉他,写成如下这样:
sign=base64(base64("token=#token#"+"userid=#userid#")+"#time#")
而且其中引号千万不能少 !</p>
<div class="input-group input-group-sm" style="margin-top: 5px">
<span class="input-group-addon">选择加密字段插入位置:</span>
<span class="input-group-addon" style="width: 3px;background-color: white">
<label>
<input type="radio" name="encyption_radio" value="url" id="bingfa_true" checked="checked">
<span style="font-size: medium">url</span>
</label>
</span>
<span class="input-group-addon" style="width: 3px;background-color: white">
<label>
<input type="radio" name="encyption_radio" value="body" id="bingfa_false">
<span style="font-size: medium">body</span>
</label>
</span>
</div>
<div class="input-group input-group-sm" style="margin-top: 5px">
<span class="input-group-addon">加密表达式:</span>
<input id="encyption_input" type="text" class="form-control" style="height: 40px">
</div>
<br>
</div>
展示如下:
注意,目前的div的隐藏属性display 我故意写成no2ne,目的是方便调试让它一直展示,等我们完全写完后 再给改成none即可。
然后我们去搞定他的展示show函数:
如上图,注意,我们不打算在打开的时候 重新请求后端获取最新的加密表达式,而是直接在dom标签里 给这个input的value 用上进入页面时候带进来的数据:从项目中获取到的加密表达式。
有的同学会问,这样会不会打开的时候显示的并不是最新的,其实这个可能性几乎为0,只要我们把这个唯一能修改加密表达式的弹层,无论是取消还是保存,都触发整个页面的刷新,那么就会保证修改后刷新页面自动带入了最新的数据了,这个设计很讨巧。
现在可以把div的display 改回none了,试试效果,可以正常打开即是成功~
好了本期内容到此结束,下期我们搞定保存功能。