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
相关推荐
项目中所需的jar包在压缩包中已提供,项目中用到了JSR303和hibernate-validator的技术,大量采用了注解@NotNull,@Email,@Length,@Max,@Pattern,@Size等,此外还采用了自定义注解,验证信息全部配置在属性文件中.
OAuth2验证可以使用多种方式,此处使用注解方式。设计思路是在需要获取用户信息的GET请求上添加注解,然后在调用的时候判断是否包含此注解,然后做处理流程。 每次请求包含2种情况: 1.不需要获取用户信息,直接跳转...
适合学完SpringMVC的学生用来练习项目的,也可以当大作业去提交。 基本功能就是图书管理员增删改查,用户可以借书还书,都有时间记录。 亮点:注册时,会有验证码验证注册,防止被恶意刷库;前护短信息交互,后端...
企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_...
xml java系统源码 mtools 基于springmvc下,便捷开发插件,主要是为了快速,方便地集成到新项目中...该包下是一些自定义的注解,如:免登录注解@AuthLogin 免权限验证注解@AuthAccess 以及获取当前登录用户对象注解:@
使用注解 @Length @NotNull @Range 进行表单验证 使用 springMVC + MongoDB 的基本 CRUD 操作 单元测试:TestNG + Mockito + Spring 测试 测试NG:@DataProvider MongoDB 的安装步骤可以在以下链接中找到
微服务-> springMVC rest定制属性-> json 客户监听器模式hystrix工作方式kafka kafka api 流简单实现验证别名注释注解派生aop切面,过滤器,拦截器安全resttemplate自定义restTemplate 拼写作用域resttemplate自定义...
3.5、jQuery扩展插件validate—5添加自定义验证方法 3.6、jQuery扩展插件validate—6radio、checkbox、select的验证 四、文件上传 4.1、Servlet3.0以下的通过commons-fileupload上传 4.1.1、添加上传依赖包 4.1.2
后端使用SpringMVC拦截器+jwt+自定义注解实现身份验证和权限控制。用户每次登录成功后,后端会返回token交由前端缓存,前端对后端相关接口发起的每次请求都需要携带该token进行验证。 系统使用二维码来充当接种者...
SpringMVC验证框架 hibernate-validator日志管理 slf4j+logback数据源 druidjcaptcha 验证码jsp+servlet###前端Sea.js 组织 js 代码jquery+jsjquery-ui-bootstrap 界面框架font-wesome 字体/图标框架方便的前后端...
- SpringMVC - Spring - MyBaits - MyBatis Generator - MyBatis PageHelper - Druid - Lombok - JWT - Spring Security - JavaMail - Thymeleaf - HttpClient - FileUpload - Spring Scheduler - Hibernate ...
5.7.3注解驱动的缓存 5.8小结 第6章事务管理 6.1理解事务 6.1.1仅用4个词解释事务 6.1.2理解spring对事务管理的支持 6.2选择事务管理器 6.2.1jdbc事务 6.2.2hibernate事务 6.2.3jpa事务 6.2.4jdo事务 ...