应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者session域。
python中,之前在python flask中可以使用装饰器来对方法进行预处理,进行权限处理
先看一个实例,使用@access_required拦截:
1
2
3
4
5
6
7
8
|
@api .route( '/post_apply' )
@access_required def apply ():
"""
活动报名
"""
print '报名者是:' + g.user
return jsonify(response_data)
|
实现很简单:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 验证access_token并保存当前用户到g中 def access_required(f):
@wraps(f)
def decorated_func( * args, * * kwargs):
access_token = request.values.get( 'access_token' )
if access_token = = None :
return error_msg( '500' , 'access_token required' )
if access_token = = "":
return error_msg( '500' , 'access_token can not empty' )
if is_access_token(access_token) = = False :
return error_msg( '500' , 'invalid_access_token' )
return f( * args, * * kwargs)
return decorated_func
|
java中,自定义注解拦截器来实现,在需要的拦截的方法上面加上一个注解@AccessRequired
spring mvc Controller中的使用实例
1
2
3
4
5
6
7
8
9
|
/** * 注解拦截器方法
* @return
*/
@RequestMapping (value= "/urlinter" ,method=RequestMethod.GET)
@AccessRequired
public @ResponseBody String urlInterceptorTest() {
return "通过拦截器:user" +request.getAttribute( "currUser" );
}
|
如何实现以上实例呢?
定义一个注解:
1
2
3
4
5
6
7
8
9
10
|
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
@Target (ElementType.METHOD)
@Retention (RetentionPolicy.RUNTIME)
public @interface AccessRequired {
} |
搞一个拦截器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/** * 拦截url中的access_token
* @author Nob
*
*/
public class UserAccessApiInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
AccessRequired annotation = method.getAnnotation(AccessRequired. class );
if (annotation != null ) {
System.out.println( "你遇到了:@AccessRequired" );
String accessToken = request.getParameter( "access_token" );
/**
* Do something
*/
response.getWriter().write( "没有通过拦截,accessToken的值为:" + accessToken);
}
// 没有注解通过拦截
return true ;
}
} |
在spring mvc配置文件中:
1
2
3
4
5
6
7
8
9
10
11
12
|
<!-- 拦截器 --> < mvc:interceptors >
< mvc:interceptor >
<!-- 对所有的请求拦截使用/** ,对某个模块下的请求拦截使用:/myPath/* -->
< mvc:mapping path = "/**" />
< ref bean = "userAccessInterceptor" />
</ mvc:interceptor >
</ mvc:interceptors >
< bean id = "userAccessInterceptor"
class = "com.banmacoffee.web.interceptor.UserAccessApiInterceptor" >
</ bean >
|
大功告成,你可以在拦截器里为所欲为,并且把它加载任何你想的Controller 请求的方法上。
http://www.open-open.com/lib/view/open1408004883004.html
相关推荐
网上很多人想使用注解拦截spring mvc action中的一个方法,实现方法很多,一般是通过在拦截器中分析url路径来实现, 使用自定义注解的方式来标注要拦截的 action 中的某个方法, 没有很好的解决方法, 如果通过借助spring...
spring mvc 注解 拦截器 对一个数据库表进行了增删改查操作 ,初学spring mvc框架的 可以参考 代码下载直接可以运行!~~
spring mvc 注解 拦截器 对一个数据库表进行了增删改查操作 ,初学spring mvc框架的 可以参考 代码下载直接可以运行!~~ 包含jar和数据库sql语句
1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 ...14.Spring MVC 拦截器案例 15.Spring MVC 异常处理案例
后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04. 系统前台采用全采用的Html+jQuery开发 05. 系统前台与后台的交互全部使用 Ajax 异步请求 06. 自定义 SecureValid 注解实现权限的控制 07. ...
基于注解的Spring MVC 3 结合DWZ 框架,编写的拦截器判断session是否过期,有需要的可以下载。
主要介绍了springmvc用于方法鉴权的注解拦截器的解决方案代码,具有一定借鉴价值,需要的朋友可以参考下。
基于spring2.5的采用XML配置的spring MVC项目 基于spring2.5注解实现的spring MVC项目 基于spring 3.0项目开发实例 基于spring 3.0mvc 框架的文件上传实现 Spring中的拦截器
,Spring Web编程模型,基于权限配置的方式:核心是1个拦截器,基于注解的权限控制:核心是1个切面,WebFlux编程模型,基于权限配置的方式:核心是1个过滤器,基于注解的权限控制:核心是1个切面
上次写的那个引用乱了。 spring mvc+ibatis,webspring-mvc源码实例,实现了注解,拦截器,ibatis等实例
也包含新版Spring3.0,3.1 基于注解的MVC配置方法 总之绝对值得下载 学习 并以后查阅 目录 第一章 Web MVC简介.pdf 第二章 Spring MVC入门 .pdf 第三章 DispatcherServlet详解.pdf 第四章 Controller接口控制器详解...
1 此系统采用了目前最流行的ssm框架,其中的spingMVC框架相对于struts2框架更灵活,更安全。 2 本项目springMVC框架采用了注解映射器,使用了...5 spring容器内部使用拦截器,以Spring AOP的方式实现事务控制管理。
本人搭建的最新ssm框架,包括c3p0连接池、全注解、AOP日志管理、mybatis拦截器物理分页、文件上传等功能。依旧保持最小jar包,只有20个,本人讨厌滥用jar包。
webspring-mvc源码实例,实现了注解,拦截器等实例
此系统采用了目前最流行的ssm框架,其中的spingMVC框架相对于struts2框架更灵活,更安全。 2 本项目springMVC框架采用了注解映射器,使用了... 5 spring容器内部使用拦截器,以Spring AOP的方式实现事务控制管理。
主要介绍了详解利用SpringMVC拦截器控制Controller返回值,通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容,有兴趣的可以了解一下。
第五章 处理器拦截器详解 第六章 注解式控制器详解 注解式控制器运行流程及处理器定义 第六章 注解式控制器详解 SpringMVC3强大的请求映射规则详解 第六章 注解式控制器详解 Spring MVC 3.1新特性 生产者、消费者...
编程语言+JAVAspring+MVC框架+...它介绍了JAVAspring的MVC框架的概念、原理和作用,以及如何使用JAVAspring的MVC框架来开发Web应用,包括控制器、模型、视图、拦截器、异常处理等内容,以及一些配置文件和注解的用法。
第五章 处理器拦截器详解 第六章 注解式控制器详解 注解式控制器运行流程及处理器定义 第六章 注解式控制器详解 SpringMVC3强大的请求映射规则详解 第六章 注解式控制器详解 Spring MVC 3.1新特性 生产者、消费者...