springMvc自定义注解验证
来源:互联网 发布:生产网络拓扑图 编辑:程序博客网 时间:2024/06/13 14:46
springMvc自定义注解验证
注解就是一个标记,打了注解就有特殊的标志,如果一个方法上打了这个注解,就可以配合拦截器,拦截器拦截到符合拦截
规则的请求,就拦截成功,然后在拦截器里看这个方法有没有加这个注解即可,有的话看注解里对应的标记值时候符合要求
package com.demo.web.auth;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)/////最高优先级@Order(Ordered.HIGHEST_PRECEDENCE),还可以设置优先级
public @interface AuthPassport {
boolean validate() default true;
}
package com.demo.web.auth;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class AuthInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(handler.getClass().isAssignableFrom(HandlerMethod.class)){
AuthPassport authPassport = ((HandlerMethod) handler).getMethodAnnotation(AuthPassport.class);
//没有声明需要权限,或者声明不验证权限(检验拦截器里面是不是有这个注解)
if(authPassport == null || authPassport.validate() == false)//用方法调用的方式取值
return true;
else{
//在这里实现自己的权限验证逻辑(可以直接把权限插件的(shrio的验证代码引入,如果只是登陆就不必,直接校验登录名,密码即可))
if(false)//如果验证成功返回true(这里直接写false来模拟验证失败的处理)
return true;
else//如果验证失败
{
//返回到登录界面
response.sendRedirect("account/login");
return false;
}
}
}
else
return true;
}
}
<mvc:interceptors>
<!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 -->
<bean class="com.demo.web.auth.AuthInterceptor"></bean>
////需要配置map时配置
<mvc:interceptor>
<mvc:mapping path="/*.do" />
<bean class="com.party.common.interceptor.AuthCheckInteceptor"/>
</mvc:interceptor>
</mvc:interceptors>
@AuthPassport(validate='false')//用这种K-Y方式改变注解中的值
@RequestMapping(value={"/index","/hello"})
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "Hello World!");
modelAndView.setViewName("index");
return modelAndView;
}
参考:
http://www.cnblogs.com/liukemng/p/3751338.html
http://www.cnblogs.com/parryyang/p/5413618.html
- springMvc自定义注解验证
- SpringMVC拦截器+Spring自定义注解实现权限验证
- SpringMVC验证注解Validated
- MVC 自定义 验证注解
- 自定义注解验证
- 自定义注解验证参数
- 自定义valida验证注解
- SpringMvc (六) 自定义验证
- SpringMVC注解验证的国际化
- SpringMVC注解实现登录验证
- SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
- SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
- SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
- spring数据验证----自定义注解
- 自定义注解做数据验证
- springMvc 自定义注解以及自定义异常处理
- SpringMVC 实现注解式权限验证
- SpringMVC实现注解式权限验证
- 变量的生存期
- 如何获取数据的label
- springMvc源码大致过程
- 【BZOJ 3107】【CQOI 2013】二进制a+b
- office2016 word 若干操作
- springMvc自定义注解验证
- Java
- 悲观锁、乐观锁、行级锁、表级锁
- 框架文件的几个重点说明
- ruff implement a responder
- 求两个字符串的最长公共子序列——Java实现
- es6-super关键字
- 与不同框架整合时mybatis的使用区别
- Android属性动画用法(中)