<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Element on F嘉阳</title><link>https://blog.fjy8018.top/tags/element/</link><description>Recent content in Element on F嘉阳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 08 May 2020 14:52:07 +0800</lastBuildDate><atom:link href="https://blog.fjy8018.top/tags/element/index.xml" rel="self" type="application/rss+xml"/><item><title>微服务平台开发总结（1）——第一代密码管理系统</title><link>https://blog.fjy8018.top/archives/243/</link><pubDate>Thu, 07 May 2020 21:34:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/243/</guid><description>&lt;h2 id="背景"&gt;&lt;a href="#%e8%83%8c%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;背景&#10;&lt;/h2&gt;&lt;p&gt;随着网站、工作使用需要，对密码存储的需求越来越大，初期采用本地数据库进行存储，但不适合多地访问，一旦离开了本地电脑，就无法查询密码信息，故计划搭建个人使用的密码信息管理系统&lt;/p&gt;&#10;&lt;h2 id="概要"&gt;&lt;a href="#%e6%a6%82%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;概要&#10;&lt;/h2&gt;&lt;h3 id="时间线"&gt;&lt;a href="#%e6%97%b6%e9%97%b4%e7%ba%bf" class="header-anchor"&gt;&lt;/a&gt;时间线&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;密码管理信息系统于2018年12月立项，2019年1月9日开始第一次提交&lt;/li&gt;&#10;&lt;li&gt;2019年2月7日第一个版本上线试运行&lt;/li&gt;&#10;&lt;li&gt;2019年4月7日进入维护阶段，不再支持新功能&lt;/li&gt;&#10;&lt;li&gt;2019年11月16日停止维护&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="架构"&gt;&lt;a href="#%e6%9e%b6%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;架构&#10;&lt;/h3&gt;&lt;h4 id="后端"&gt;&lt;a href="#%e5%90%8e%e7%ab%af" class="header-anchor"&gt;&lt;/a&gt;后端&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;JDK8&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;SpringBoot 2.1.1.RELEASE&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Jetty&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;SpringData Jpa&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;MySQL 5.7&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Docker&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Kuberneties 1.14&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Redis&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Graylog&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;GitLab CICD&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="前端"&gt;&lt;a href="#%e5%89%8d%e7%ab%af" class="header-anchor"&gt;&lt;/a&gt;前端&#10;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Vue 2.5&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;element 2.4.11&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;vuex 3&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;vue-axios 2.1.4&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;eslint 5.8.0&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;nodejs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;nginx&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;https&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Docker&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;GitLab CICD&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="原理"&gt;&lt;a href="#%e5%8e%9f%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;原理&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;后端存储密码数据字段和网站相关信息&lt;/li&gt;&#10;&lt;li&gt;采用SQL全字段模糊查询匹配结果&lt;/li&gt;&#10;&lt;li&gt;密码字段存储采用AES128结合SHA随机盐值加密存储，即使数据库被破解也无法查看对应的密码信息&lt;/li&gt;&#10;&lt;li&gt;密码加密秘钥不由服务端存储，只在用户登陆时录入并临时通过AES128加密后存储在Redis中，用户登出或者登陆超时后销毁&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="优势"&gt;&lt;a href="#%e4%bc%98%e5%8a%bf" class="header-anchor"&gt;&lt;/a&gt;优势&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;单体项目，部署简单&lt;/li&gt;&#10;&lt;li&gt;容器化部署，迁移便利&lt;/li&gt;&#10;&lt;li&gt;Kuberneties云平台部署，支持灰度发布&lt;/li&gt;&#10;&lt;li&gt;无状态后端服务，支持集群化部署&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="安全审计"&gt;&lt;a href="#%e5%ae%89%e5%85%a8%e5%ae%a1%e8%ae%a1" class="header-anchor"&gt;&lt;/a&gt;安全审计&#10;&lt;/h3&gt;&lt;p&gt;支持简单的安全审计&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;登陆日志记录&lt;/li&gt;&#10;&lt;li&gt;登陆归属地记录&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="安全问题"&gt;&lt;a href="#%e5%ae%89%e5%85%a8%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;安全问题&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;通过实现的Spring拦截器进行登陆拦截，安全性不高&lt;/li&gt;&#10;&lt;li&gt;没有采用session会话方式，故多地登陆账号且加密秘钥未过期则不需要再次录入&lt;/li&gt;&#10;&lt;li&gt;支持所有跨域行为，没有对客户端进行识别&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="其他问题"&gt;&lt;a href="#%e5%85%b6%e4%bb%96%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;其他问题&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;独立用户控制，扩展性不高&lt;/li&gt;&#10;&lt;li&gt;没有基于RBAC模型的权限控制&lt;/li&gt;&#10;&lt;li&gt;没有管理后台&lt;/li&gt;&#10;&lt;li&gt;单模块、单体项目，不利于扩展&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="界面演示"&gt;&lt;a href="#%e7%95%8c%e9%9d%a2%e6%bc%94%e7%a4%ba" class="header-anchor"&gt;&lt;/a&gt;界面演示&#10;&lt;/h2&gt;&lt;p&gt;登陆页&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161528778" class="gallery-image" data-flex-basis="491px" data-flex-grow="204" height="937" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161528778.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;p&gt;若用户不存在则自动新增&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161607742" class="gallery-image" data-flex-basis="1581px" data-flex-grow="658" height="289" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161607742.png" width="1904"&gt;&lt;/p&gt;&#10;&lt;p&gt;录入加密秘钥&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161628599" class="gallery-image" data-flex-basis="3349px" data-flex-grow="1395" height="135" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161628599.png" width="1884"&gt;&lt;/p&gt;&#10;&lt;p&gt;主页&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161724845" class="gallery-image" data-flex-basis="546px" data-flex-grow="227" height="818" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161724845.png" width="1864"&gt;&lt;/p&gt;&#10;&lt;p&gt;信息录入&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161803334" class="gallery-image" data-flex-basis="523px" data-flex-grow="217" height="881" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161803334.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161813699" class="gallery-image" data-flex-basis="3544px" data-flex-grow="1476" height="130" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161813699.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;p&gt;支持全字段模糊检索&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161844739" class="gallery-image" data-flex-basis="707px" data-flex-grow="294" height="469" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161844739.png" width="1383"&gt;&lt;/p&gt;&#10;&lt;p&gt;支持Excel模板信息导入&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506161917039" class="gallery-image" data-flex-basis="598px" data-flex-grow="249" height="770" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506161917039.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;p&gt;登出&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20200506162827488" class="gallery-image" data-flex-basis="1581px" data-flex-grow="658" height="289" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/image-20200506162827488.png" width="1904"&gt;&lt;/p&gt;&#10;&lt;h2 id="效果"&gt;&lt;a href="#%e6%95%88%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;效果&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;系统稳定运行一年，符合系统初期设计目的&lt;/li&gt;&#10;&lt;li&gt;同时兼容移动端渲染&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>