今天完成的事情:
1,注册登录时使用MD5加盐。
1.1 首先写一个注册界面:
利用伪post方法实现put(增加)方法,JSP页面如下:
对应的controller方法为:
1.2 分别在数据库,pojo类和mapper中增加salt信息,利用当前时间取余得到salt值(五位数字),将salt和用户设定的密码拼接成一个字符串,然后用MD5算法算得的字符编码储存在数据库中,得到数据库中的用户密码。
在登录界面上注册了一个用户,在数据库中的数据如图:
1.3 用户登录的时候,需要先通过同样的计算,将用户输入的密码和salt加密,看看和数据库中的信息是否匹配。过程很简单,就不贴代码了。
这个方法中没有将salt设成随机的编码,所以程序还是半成品,明天继续完善一下。
2,为了将小课堂学习了一些拦截器、过滤器和监听器的知识:
2.1 拦截器:
JAVA中的拦截器有两个概念,一个是SpringMVC拦截器,用来拦截controller动作;另一个是SpringAOP拦截器,用来管理bean的访问。在任务五中,我们使用的是SpringMVC拦截器,用来实现用户登录功能。
SpringMVC中的Interceptor拦截请求是通过HandlerInterceptor来实现的。HandlerInterceptor包含三个方法,分别是preHandle()、postHandle()和afterCompletion()。
2.2 过滤器:
Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。
2.3 监听器:
servlet 规范中为每种事件监听器都定义了相应的接口,在编写事件监听器程序时只需实现这些接口就可以了。一些Servlet事件监听器需要在web应用程序的部署 文件描述符文件(web.xml)中进行注册(注册之后才能发布),一个web.xml可以注册多个servlet事件监听器。web服务器按照它们在web.xml中注册顺序来加载和注册这些servlet事件监听器。servlet事件监听器的注册和调用过程都是由web容器自动完成的,当发生被监听对象被创建,修改,销毁等事件时,web容器将调用与之相关的servlet事件监听器对象的相应方法(所监听到的对象如果在创建、修改、销毁事件触发的时候就会调用这些监听器这就相当于面向事件编程的概念),用户在这些方法中编写的事件处理代码(相当于JS中的事件响应)即被执行。由于在一个web应用程序中只会为每个事件监听器类创建一个实例对象,有可能出现多个线程同时调用一个事件监听对象的情况,所以要注意多线程安全问题。
明天计划的事情:
1,讲小课堂,主题是拦截器、过滤器和监听器;
2,将任务五提交。
遇到的问题:
一开始不理解加盐为什么需要使用随机生成字符串(盐),以为salt是每次都需要随机生成的。后来了解到盐salt值是需要存储在数据库中的,才明白。在用户注册的时候,随机生成一个salt值,并存储在数据库中,跟用户对应,也就是说每个人的salt值都是不一样的。再用用户设置的密码拼接上salt值,经过MD5加密的手段生成用户密码,存储在数据库中。这样的话,即使数据库泄漏,黑客知道了salt值和数据库存储的用户密码,也无法获得用户设置的密码(因为MD5算法具有不可逆性,而且salt值增加了破解难度),从而无法登陆用户账号,就干不了坏事了。
收获:
了解了用户信息加密的方法,虽然还没有完全实现,但是已经知道其中的道理了。明天可以继续完善一下。
评论