发表于: 2017-10-28 23:46:42
1 858
今天完成的任务:
1.今天准备cookie,加密,拦截,session都用到自己的项目中。
说一下我自己做的流程,首先肯定还是配置springMVC中的拦截器。对访问/u/*的路径进行拦截,使请求先通过拦截器类。
<mvc:default-servlet-handler/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/u/*"/>
<bean class="comNaNteng.util.SimpleInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
然后去写Controller登录方法的生成cookie,在没有登录的话需要先去登录,然后新生成一个cookie,并且生成cookie的时候需要有一个生成token的方法,这里面需要调用des加密工具类去将id+login_time作为一个字符串去加密。最后加密的字符串作为token。并且创建一个session,也放入token。(这一块需要首先知道怎么去使用des工具类加密和解密,然后,怎么生成token,其实就是一个字符串。)
然后然后就是去建一个拦截器的类。
这里面需要做的事情是在拦截器中配置拦截的情况,拦截器类继承的是HandlerInterceptor类,这里面需要设置preHandle方法,在这个方法里面去判断是否有cookie,是不是和session中的cookie是相同的,如果相同那就通过拦截,如果和session中的值不同,或者session不存在(比如关闭浏览器之后session会消失)就不能通过拦截下来。如果都不通过的话,那么就应该重定向到登录的界面,这样就实现了拦截。
完成了上面的工程以后,就可以实现了使用cookie去验证,但是这样在关闭浏览器之后session就会失效,但是我们还是希望可以session没有了之后,但是在cookie的有效时间内,依然可以实现自动登录。那么在没有session的时候可以去将token解密,然后去和数据库匹配是不是相同的,如果是的话说明用户之前登录过的,那就通过拦截。
上面说的还是有点问题,就是用户第一次登录了之后token就存在了,并且不会改变,这样的话还是有些不安全的,所以我们可以再加入每次登录的时候都解密token,并且将时间更新,再加密生成新的token。
最后一步,用户只有在访问被拦截的界面的时候才会去验证是否登录,那有点不太符合我们平常的使用,我们平时访问的网页,应该是在打开首页的时候就回去验证,如果可以的话就自动的登录。而不是在我需要登录权限的时候才去验证。
那实现上面说的就可以在登录的界面去做一个判断是不是有cookie,如果cookie中的token是符合要求的,就可以去创建一个session存放token,并且更新登录时间。
这样的话其实就相当于实现了自动登录。
自己梳理了一遍任务五自己实现的思路,中间碰到各种问题都是小错误。注意一下细心,各种路径,还有尽量使用绝对路径。
明天计划:
开始做任务6.
拆一下任务6的禅道
遇到问题:
解密之后怎么分别获取id和时间?
可以使用sprit的方法,会根据符号分开字符串,然后写入数组中,这样数组中第一个就是id,第二个就是时间。
登录注销的时候session需要清除吗?
需要清除,因为session中应该是有这个用户的信息才正确。
自动登录应该放在首页而不是放在需要被拦截的界面。
访问首页的时候是应该去验证一下有没有cookie符合条件,符合的话就让用户自动的登录。
收获:
任务五做完了。对于session和cookie都有了了解
禅道:
http://taskNaNteng.com/zentao/project-task-343.html
评论