- 浏览: 1263074 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
拦截器配合注解使用: 权限判断
(1)controller层:
@AuthorityValid(validate=true)
@RequestMapping("/")
public String list(Model model) {
System.out.println(" *** controller *** "+this);
return "index";
}
(2)自定义注解@AuthorityValid
@Documented
@Inherited
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthorityValid {
boolean validate() default true;
}
(3)拦截器:会拦截带@AuthorityValid注解的方法
public class AuthorityInterceptorAdapter extends HandlerInterceptorAdapter {
private static final Logger logger = LoggerFactory.getLogger(AuthorityInterceptorAdapter.class);
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//处理Permission Annotation,实现方法级权限控制
if (handler.getClass().isAssignableFrom(HandlerMethod.class)) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
/*
* 1、确认当前的controller是否需要进行权限判定,如果需要则进行验证。
* 2、当controller不需要验证,则验证当前的方法是否需要权限验证,需要则进行验证,不需要则跳出
* */
//获取controller注解, controller检查是否需要验证权限控制
AuthorityValid permission = handlerMethod.getMethod().getDeclaringClass().getAnnotation(AuthorityValid.class);
if (permission != null && !permission.validate()) { //不需要验证权限
return super.preHandle(request, response, handler);
}
//获取方法注解,方法检查是否需要验证权限控制
permission = handlerMethod.getMethod().getAnnotation(AuthorityValid.class);
if (permission != null && !permission.validate()) { //不需要验证权限
Parameter[] args = handlerMethod.getMethod().getParameters();
logger.info("参数:{}", args[0]);
return super.preHandle(request, response, handler);
}
// 权限判断,没有权限则跳转至无权限页面,有权限则走正常流程
logger.info("权限判断...");
}
return super.preHandle(request, response, handler);
}
}
(4)自动配置
@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {
@Bean
public AuthorityInterceptorAdapter getValidInterceptor() {
return new AuthorityInterceptorAdapter();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration addInterceptor = registry.addInterceptor(getValidInterceptor());
// 排除配置
addInterceptor.excludePathPatterns("/error");
addInterceptor.excludePathPatterns("/login**");
// 拦截配置
addInterceptor.addPathPatterns("/**");
}
}
拦截器配合注解使用: 权限判断
(1)controller层:
@AuthorityValid(validate=true)
@RequestMapping("/")
public String list(Model model) {
System.out.println(" *** controller *** "+this);
return "index";
}
(2)自定义注解@AuthorityValid
@Documented
@Inherited
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthorityValid {
boolean validate() default true;
}
(3)拦截器:会拦截带@AuthorityValid注解的方法
public class AuthorityInterceptorAdapter extends HandlerInterceptorAdapter {
private static final Logger logger = LoggerFactory.getLogger(AuthorityInterceptorAdapter.class);
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//处理Permission Annotation,实现方法级权限控制
if (handler.getClass().isAssignableFrom(HandlerMethod.class)) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
/*
* 1、确认当前的controller是否需要进行权限判定,如果需要则进行验证。
* 2、当controller不需要验证,则验证当前的方法是否需要权限验证,需要则进行验证,不需要则跳出
* */
//获取controller注解, controller检查是否需要验证权限控制
AuthorityValid permission = handlerMethod.getMethod().getDeclaringClass().getAnnotation(AuthorityValid.class);
if (permission != null && !permission.validate()) { //不需要验证权限
return super.preHandle(request, response, handler);
}
//获取方法注解,方法检查是否需要验证权限控制
permission = handlerMethod.getMethod().getAnnotation(AuthorityValid.class);
if (permission != null && !permission.validate()) { //不需要验证权限
Parameter[] args = handlerMethod.getMethod().getParameters();
logger.info("参数:{}", args[0]);
return super.preHandle(request, response, handler);
}
// 权限判断,没有权限则跳转至无权限页面,有权限则走正常流程
logger.info("权限判断...");
}
return super.preHandle(request, response, handler);
}
}
(4)自动配置
@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {
@Bean
public AuthorityInterceptorAdapter getValidInterceptor() {
return new AuthorityInterceptorAdapter();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration addInterceptor = registry.addInterceptor(getValidInterceptor());
// 排除配置
addInterceptor.excludePathPatterns("/error");
addInterceptor.excludePathPatterns("/login**");
// 拦截配置
addInterceptor.addPathPatterns("/**");
}
}
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 249往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 387import org.apache.http.HttpEnt ... -
Groovy超强的Java动态计算能力
2020-06-25 09:03 588//Groovy超强的Java动态计算能力 groovy-2. ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 866import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 897JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 714import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 418Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 314java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 698import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 497软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 318import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 702import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 345Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 358import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 931对称加密、解密 import javax.crypto.Ci ... -
aspectj连接点
2018-12-13 15:55 511切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 814spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 480public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 648//使用反射将对象转Map<String, St ... -
设计模式之原型模式
2018-05-20 18:42 455/** * 原型设计模式:原型模式主要用于对象的复制 ...
相关推荐
SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...
在网上找了很多springmvc转springboot的案例,大多都说的不全。 根据原springmvc项目(ssm+jsp)转换为springboot项目,爬了高很多坑,整理成此文档,希望对大家有所帮助。
redis-service_pubsub.rar。 springMVC集成spring-data-redis实现发布订阅。
SpringMVC-Mybatis-Shiro-redis-master..............
基于SpringMVC Mybatis Shiro Redis 的权限管理系统,该系统已经部署到线上,线上访问地址:http://shiro.itboy.net,登录账号:admin 密码:sojson,,详细教程参考sojson.com/shiro
在执行目标函数的时候,需要先提前做一些处理,类似于Filter的方法,该用什么方式处理,SpringMVC提供了拦截器的处理方式
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
SpringMVC精品资源--教程源码-springboot部分SpringMVC常用的注解; SpringBoot
SpringMVC精品资源--用springboot + springmvc + mybatis + maven搭建
基于SpringMVC、Mybatis、Redis、Freemarker的Shiro管理Demo源码的升级版 相关详细配置说明请参看 --> http://www.sojson.com/shiro
SpringMVC精品资源--毕业设计,校园新闻系统,使用SpringBoot、SpringMVC、Mybatis、
SpringMVC精品资源--基于 SpringBoot + Spring + SpringMvc+Mybatis+
SpringMVC精品资源--包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstra
前后端交互主要前端使用微信小程序中ajax请求,即wx.request以json格式向后台传递数据。后端接收后进行相应处理。 小程序功能 # 信息页 主要是根据服务类型进行服务项目的展示,用户点击服务项目可以查看项目...
SpringMVC精品资源--订单派单中心、springBoot、springMVC、Mybatis、Redis、K
SpringMVC4.0以后,Spring开始使用Spring Boot来支持自动化开发和部署,虽然方便了程序员和运维,但是也让老的架构开发人员感到困惑。 所以,作者做了一下研究尝试将新的Spring Boot的web项目,转换成旧项目模式,...
SpringMVC精品资源--SpringBoot汽车租赁系统-Car Rental Management On S
SpringMVC------从HelloWorld开始
用户Spring mvc Jackson自动转化的支持
springboot学习、springmvc、mybatis、注解、拦截器