JavaElectricalbusiness(第三章)——用户开发模块1
用心分享每一篇干货
一
我们的整个项目分模块进行,每个模块都会介绍数据表设计、接口设计
首先看看用户模块的功能:登录、用户名验证、注册、忘记密码、提交问题答案、重置密码、获取用户信息、更新用户信息、退出登录
而在用户模块中,我们也将学习到以下的知识点
——横向越权、纵向越权安全漏洞
——MD5明文加密及增加salt值
——Guava缓存的使用
——高复用服务响应对象的设计思路及抽象封装
——MyBatis-plugin使用技巧(文章不提及、有兴趣的同学可以自行查找)
——Session的使用
——方法局部演进
横向越权、纵向越权的安全漏洞(解析)
有关MD5加密的使用,我想大部分人都是比较熟悉的,这里简单说明后,会加一个salt值,提高加密的安全性
Guava缓存是一个大部分公司都会调用的缓存工具类,性能较好,大家可以找时间单独了解学习。
接下来是代码思路的讲解与工具类使用的说明。
上面是项目在开发用户模块中主要用到的类与xml,接下来我会一个一个接口的讲解,以UML图的形式。
以上是后台用户登录API的大致开发流程,接下来我会针对这个API流程图,截取代码,大致和大家讲解,涉及工具类的时候就一笔带过,在之后会单独补充工具类的wiki。
这是DataBase中的两个方法的sql语句,我们使用myabtis,就是将SQL语句写在xml中,通过mapper映射,spring整合后的myabtis回去扫码该路径下的xml,执行SQL语句。
我们的Dao层其实只是方法声明的接口,这里声明两个sql方法,具体实现就是在xml中的SQL语句。
以上是serverImpl层的login实现代码,首先调用dao层检查是否存在用户名,存在用户名则检查用户名和密码(存入密码是MD5后的),所以这里的密码也要先进行MD5加密,再进行比较,检查正确后,返回用户对象,并将密码置空,因为Controller层要将用户存入session中,所以要将密码置空,保证用户信息安全。
控制层方法直接调用service层,如果service调用成功,判断返回用户权限是否是管理员,是则将信息保存到session中,因为在接下来的方法中,都会先在session中判断用户是否是管理员且登录状态,如果返回false,则没有权限请求API。
我们项目使用的是SSM、SpringMVC的,这里的Controller里返回的ServiceResponse即类似于modelMap,只是对它做了泛型封装。
领取专属 10元无门槛券
私享最新 技术干货