发表于: 2018-03-05 23:13:34

1 481


今天完成的事情:

1,今天实现了页面登录拦截器功能。

    拦截器功能的实现比较简单,首先在SpringMVC.xml中配置拦截器。内容如下:


<!--拦截器-->
<mvc:interceptors>
   <mvc:interceptor>
       <mvc:mapping path="/u/**"/>
       <bean class="com.byou.Interceptor.Interceptor"/>
   </mvc:interceptor>
</mvc:interceptors>

其中

       <bean class="com.byou.Interceptor.Interceptor"/>

标签指示拦截器类的位置。

<mvc:mapping path="/u/**"/>

表示拦截路径,拦截所有/u/路径的请求。


所谓拦截的意思就是,当浏览器请求这个路径时,拦截器会产生一些操作。HandlerInterceptor拦截器有三个方法,分别是preHandlepostHandleafterCompletion。preHandle方法在controller处理之前进行调用。当preHandle方法返回false时,整个请求就会中断,不继续执行。当返回值是true时,则会执行controller方法。

postHandle方法在controller处理完成之后,DispatcherServlet进行视图渲染之前执行。可以对ModelAndView进行操作。

afterCompletion方法在所有请求都已经完成之后执行。用于清理资源。


我这里只使用了最简单的拦截器功能,所以只有preHandle方法。代码如下:

public class Interceptor implements HandlerInterceptor {

@Autowired
   private StudentService studentService;

   @Override
   public boolean preHandle(HttpServletRequest request,
                            HttpServletResponse response, Object handler) throws Exception {

boolean checkResult = studentService.checkCookie(request,response);

       if (checkResult == true) {
return true;
       }else {
response.sendRedirect("/Task1-3/loginPage");
           return false;
       }
}

这个拦截器首先检查请求中的cookie,cookie中的token信息与服务器数据库中的token信息是否一致,如果一致,那就允许继续controller的处理。如果不一致,就跳转回登陆界面。


存在的问题:目前数据库中存放的还是明文密码,这样一旦数据库泄露,所有用户的账号密码信息就会泄露。解决办法在数据库中存放经过加密之后的密码。明天操作一下。



明天计划:

优化一下页面,做一个注册功能,将数据库中存放明文密码,改成存放经过加密之后的密码。学习一下加盐。提交任务五。

遇到问题:

各种方法的实现需要建立一个比较简单有逻辑的项目框架下。我建的类和各种方法有些乱。明天可以一并解决。

收获:

学会了cookie和token的使用。



返回列表 返回列表
评论

    分享到