我自己搭的springmvc的项目,想添加登陆校验。
最简易优雅的实现,在需要用户信息才可以操作的Controller的方法上面加上一个@CheckLogin就可以实现登陆校验。
假如未登录–>跳转到登录页–>登陆成功–>自动跳回刚才要执行的动作方法。
用springmvc的handlerinterceptor的来实现。
一.首先介绍一下action拦截器:
HandlerInterceptor是Spring MVC为我们提供的拦截器接口,来让我们实现自己的处理逻辑,HandlerInterceptor 的内容如下:
1 | public interface HandlerInterceptor { |
可以看到接口有3个方法,其含义如下:
preHandle:在执行action里面的处理逻辑之前执行,它返回的是boolean,这里如果我们返回true在接着执行postHandle和afterCompletion,如果我们返回false则中断执行。
postHandle:在执行action里面的逻辑后返回视图之前执行。
afterCompletion:在action返回视图后执行。
HandlerInterceptorAdapter适配器是Spring
MVC为了方便我们使用HandlerInterceptor而对HandlerInterceptor
的默认实现,里面的3个方法没有做任何处理,在preHandle方法直接返回true,这样我们继承HandlerInterceptorAdapter后只需要实现3个方法中我们需要的方法即可,而不像继承HandlerInterceptor一样不管是否需要3个方法都要实现。当然借助于HandlerInterceptor我们可以实现很多其它功能,比如日志记录、请求处理时间分析等,权限验证只是其中之一。
二.下面我们就来一步一步来完成注解式权限验证的功能。
首先添加一个账户的Controller和登录的Action及视图来模拟在没有权限时跳转到登陆页面,内容分别如下:
1.新建包com.bruce.interceptor包,添加自定义注解CheckLogin.java,内容如下:
1 | package com.bruce.interceptor; |
2.添加自己的拦截器实现CheckLogin继承于HandlerInterceptorAdapter,
com.bruce.interceptor包中的LoginInterceptor.java 内容如下:
1 | package com.bruce.interceptor; |
3.配置项目的spring-mvc.xml添加如下内容:
1 | <!-- 定义拦截器 --> |
4.具体的Controller写法
1 | //添加次注解,未登录的自动跳转到登录页 |
可以看到正确执行了权限判断逻辑,这样我们只需要在我们在需要权限验证的action上加上这个注解就可以实现权限控制功能了。
注解式权限验证的内容到此结束。