`
y806839048
  • 浏览: 1084800 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springMvc自定义注解验证

阅读更多

 

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_jsr303

    项目中所需的jar包在压缩包中已提供,项目中用到了JSR303和hibernate-validator的技术,大量采用了注解@NotNull,@Email,@Length,@Max,@Pattern,@Size等,此外还采用了自定义注解,验证信息全部配置在属性文件中.

    微信企业号OAuth2验证接口实例(使用SpringMVC)

    OAuth2验证可以使用多种方式,此处使用注解方式。设计思路是在需要获取用户信息的GET请求上添加注解,然后在调用的时候判断是否包含此注解,然后做处理流程。 每次请求包含2种情况: 1.不需要获取用户信息,直接跳转...

    基于SpringMVC+Vue+ElementUI+JSP+MyBatis等技术,纯注解开发的图书管理系统

    适合学完SpringMVC的学生用来练习项目的,也可以当大作业去提交。 基本功能就是图书管理员增删改查,用户可以借书还书,都有时间记录。 亮点:注册时,会有验证码验证注册,防止被恶意刷库;前护短信息交互,后端...

    JAVA高并发高性能高可用高扩展架构视频教程

    企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_...

    xmljava系统源码-mtools:基于springmvc下,便捷开发插件

    xml java系统源码 mtools 基于springmvc下,便捷开发插件,主要是为了快速,方便地集成到新项目中...该包下是一些自定义的注解,如:免登录注解@AuthLogin 免权限验证注解@AuthAccess 以及获取当前登录用户对象注解:@

    MongoDBSpring:Spring MVC + MongoDB + Spring Test + TestNG 示例项目

    使用注解 @Length @NotNull @Range 进行表单验证 使用 springMVC + MongoDB 的基本 CRUD 操作 单元测试:TestNG + Mockito + Spring 测试 测试NG:@DataProvider MongoDB 的安装步骤可以在以下链接中找到

    zxs:洲鑫系统

    微服务-&gt; springMVC rest定制属性-&gt; json 客户监听器模式hystrix工作方式kafka kafka api 流简单实现验证别名注释注解派生aop切面,过滤器,拦截器安全resttemplate自定义restTemplate 拼写作用域resttemplate自定义...

    Spring_MVC_051:Spring MVC 学习总结(五)——校验与文件上传

    3.5、jQuery扩展插件validate—5添加自定义验证方法 3.6、jQuery扩展插件validate—6radio、checkbox、select的验证 四、文件上传 4.1、Servlet3.0以下的通过commons-fileupload上传 4.1.1、添加上传依赖包 4.1.2

    基于微信小程序的疫苗预约接种系统源码+项目说明.zip

    后端使用SpringMVC拦截器+jwt+自定义注解实现身份验证和权限控制。用户每次登录成功后,后端会返回token交由前端缓存,前端对后端相关接口发起的每次请求都需要携带该token进行验证。 系统使用二维码来充当接种者...

    skeleton:Java Web Skeleton(Java Web 开发脚手架)

    SpringMVC验证框架 hibernate-validator日志管理 slf4j+logback数据源 druidjcaptcha 验证码jsp+servlet###前端Sea.js 组织 js 代码jquery+jsjquery-ui-bootstrap 界面框架font-wesome 字体/图标框架方便的前后端...

    基于Dubbo实现的SOA分布式(没有实现分布式事务)-SpringBoot整合各种组件的JavaWeb脚手架+源代码+文档

    - SpringMVC - Spring - MyBaits - MyBatis Generator - MyBatis PageHelper - Druid - Lombok - JWT - Spring Security - JavaMail - Thymeleaf - HttpClient - FileUpload - Spring Scheduler - Hibernate ...

    Spring in Action(第2版)中文版

    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事务 ...

Global site tag (gtag.js) - Google Analytics