发表于: 2017-10-28 23:46:42

1 856


今天完成的任务:

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符合条件,符合的话就让用户自动的登录。

收获:

任务五做完了。对于sessioncookie都有了了解

禅道:

http://taskNaNteng.com/zentao/project-task-343.html

 

 

 



返回列表 返回列表
评论

    分享到