发表于: 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拦截器有三个方法,分别是preHandle、postHandle和afterCompletion。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的使用。
评论